2017年3月24日金曜日

Traditional and Variation Block Monte Carlo

HSPICEの新しい版(前からあったと思うが少なくともL-2016.06-SP1-1)では,PDKにも依存するがモンテカルロ(Monte Carlo:MC)解析においてVariation-Block(VB)ベースのMC解析が利用できる.
伝統的なガウス関数(AGAUSS)以外にも,MC解析においてサンプリング手法等を変える事が出来る.

・乱数発生器
HSPICEの乱数発生器を以下のオプションで変えられる.なお2016.06から,デフォルトの乱数発生器が3LCからMCGに変更となった.

.option RANDGEN = [3LC|MOA|UVS|MCG|WH]

各アルゴリズムは以下の通り
3LC: 従来通りの乱数発生器
MOA: Multiply-with-carryタイプ
UVS: 64bit universal 乱数発生器
MCG: (Default) 64bit multiplicative(乗法)-乱数発生器
WH: 他のよりサイクル数の長い乱数発生器

・統計情報の出力
過去のMC解析とは異なり,VBベースのMCでは以下の情報も出力される.
- より詳細な統計情報:*.mpp0
- 各サンプルにおける独立変数の値:*.mc0
- 各ランダム変数の貢献度をSynopsys Custom Designerへ反映するための情報ファイル:*.annotate
-  従来のSRS解析のための部分的な情報:*.mpp0

・サンプリング手法の変更
サンプリング手法を以下のオプションで変更できる.

.option SAMPLING_METHOD = [SRS|LHS|Factoral|OFAT|Sobol|Niederreiter|External]

各サンプリング手法の説明は以下の通り.
SRS: (Default) これまでの伝統的な単純なランダムサンプリング
LHS: Latin Hypercube Sampling:多変数の時に効率的(.option REPLICATESと併用)
Factoral: Factoral サンプリング: 回路の応答から最良値-最悪値のレンジを計算する.多項応答曲面を作る.
OFAT: One-Factor-at-a-Timeサンプリング:低次元応答曲面が利用できるような,感度解析が使える領域でつかう.
Sobol: Sobol SamplingでLow-discrepancy sequence(LDS)の一種.
Niederreiter: LDSの一種.
External: 外部からデータセットを読み込む.

2017年1月8日日曜日

情報処理学会の正会員費を割り引く方法

情報処理学会の定める協力協定学会に入会している場合,
情報処理学会の正会員費を割り引くことができる.

IEEE会員なら10%,ACMなら20%割り引かれる.

情報処理学会の正会員費は10800円(2017年から1000円上がった)が,
IEEE会員ならば以前と同じ金額に抑えることができる.

最初の登録時は,IEEEの会員賞をスキャン/写真を撮って指定の
メールアドレスにメールを送ればよい.

https://www.ipsj.or.jp/member/kyoryoku.html

2016年10月15日土曜日

Rのパッケージインストール時にリポジトリを指定する

Cent OS 6 マシンにyumを使ってインストールした R のリポジトリが古い様で,>install.packages("package")
では本家CRANを見に行き,ダウンロードできない.
この場合は有効なリポジトリ(例えばcran.us)を指定すると良い様だ.dplyr と clust パッケージを以下のコマンドでインストールした.
> install.packages("dplyr", repos="http://cran.us.r-project.org/")
> install.packages("mclust", repos="http://cran.us.r-project.org/")

CPANから.tgzをローカルにダウンロードしてインストールすることもできるようだ(試していない).
> install.packages("/path/target.tgz", repos=NULL, type="source")

以下のサイトをそのまま実行した.
http://altons.github.io/r/2013/06/23/when-package-xyz-is-not-available-for-a-specific-version-of-r/

以下のWikiには国内のCRANミラーサイトについて色々書いてある(問題を解決してから見つけた)
http://www.okadajp.org/RWiki/?CRAN国内ミラーの使い方

2016年10月14日金曜日

HSPICE で Advanced Server/Clientモードを使う

HSPICEを利用するときにライセンスをチェックアウトする必要があるが,細かいシミュレーションを多数行う場合はチェックアウト/チェックインのオーバーヘッドが大きい.
ライセンスをチェックアウトした後,そのまま保持するためにServer/Clientモードを利用する.今回はAdvanced Server/Clientモードを利用する事でマルチスレッド動作を実現する(後述するが目論見は外れる).

Advanced Server/Clientモードを利用するに,以下の3つの手順を利用する.

(1) Serverの起動
HSPICEを実行するマシンで以下のコマンドを入力
% hspice -CC -mp -port [num]
-CCで Advanced server/clientモードが起動する(すぐにバックグラウンドに移動する).
-mpでマルチプロセッサによるシミュレーションを可能にする.
-portでportを指定する事で,複数のserverに番号をつける事が出来る.
portを指定しない場合は,デフォルトの25000を使う (標準出力に表示される).

(2) Clientの起動
HSPICEのワーカーを以下のコマンドで起動する.
% hspice -CC [input.sp] -port [server_name:num]

(3) Serverの終了
全てのジョブを終えたら,Serverを殺しておく(デフォルトでは1時間後にタイムアウトする).
% hspice -CC -K -port [server_name:num]

マニュアルには「Advanced server/clientモードはマルチスレッド動作(-mp)をサポートする.」とあるが,私の環境ではライセンスを1つしか取ってくれず,かなわなかった.
仕方が無いのでシェル側でマルチスレッドもどきを実装して利用した.

複数のマシンにワーカー割り当てることも可能らしいが,残念ながら試していない.

2016年9月22日木曜日

XFCE4のパネルを全て消す

XFCE4のパネルを全て消してしまいたいのだが,最後の1枚は消してもログアウトすると復活してしまう.あまり根本的なやり方ではないか,ログインセッションの情報を書き換える事で以下の様に対処した.

${HOME}/.cache/sessions/xfce4-session-{PC_name}:0

を開き,"panel"で検索しマッチした構文を全部削除し,ログアウト.
ログアウトはCtrl-Alt-DelでX11を落としてしまうのが簡単だと思われる(すぐにX11が再起動しログイン画面が出る).

根本的に殺したければ,

/etc/xdg/xfce4/xinitrc

を開き,xfce4-panel を呼び出している箇所をコメントアウトすればよい.が,これは全てのユーザーに効果が波及してしまう気がする…….(${HOME}/.xinitrcを作成して編集すればよいのかもしれないが)

2016年8月27日土曜日

PerlでNaNを使う.

Perlで数値解析をする際,ゼロ除算を適切に扱う必要がある.Perlはv5.6.1以上であればNaNを使える.NaNはどんな演算をしてもNaNとなるが,実数NaN共にゼロ除算ではエラーを吐いて止まってしまう.ゼロ除算時にNaNを発生し伝搬させるためには,分母が0であればNaNとなる様な関数を書いてやればよい(下の例ではsub DivNaN).
ちなみに無限も'inf'として使える.

2016年8月26日金曜日

octaveで関数プロット時に"error: expecting integer index..."と表示されエラーになる

octave では変数や関数を自作する事ができるが,変数と関数に同じ名前をつけることが出来ない.関数を変数で上書きした後に関数を呼び出すと,"error: expecting integer index..."とエラーになる.

octave:1> sin(pi)
ans =  1.2246e-16
octave:2> sin=10
sin =  10
octave:3> sin(pi)
error: expecting integer index, found 3.141593 ← エラーになる
octave:3> clear sin
octave:4> sin(pi)
ans =  1.2246e-16
octave:5> 

はまったのでメモ.

参考リンク.ハンガリー語のスライド.
http://xymarkus.web.elte.hu/Jegyzet/Fiznum_1_ea-10-11_csabai/lecture02.pdf