t-nissieの日記: 【電脳】並列化率を上げるためにさらにやるべきこと 3
日記 by
t-nissie
フリーソフトウエアの強誘電体シミュレータferam-0.18.05のgfortranでの並列化率(プログラムで並列化されている部分の割合)をさらに上げるには、すでにSR11000で並列化が済んでいるので、それのプロファイルとgfortranのほうのompPとかで取ったプロファイルとを見比べながら足りないところに1つ1つOpenMPのディレクティブを入れていくだけ。valgrindとかも使えるのかなぁ。
ompPはPAPI hw-counter libraryがあるとより情報を取ってくれるらしい。
feram-0.18.05/src/18example-benchmark/で取った並列化率、並列効果の図。
feramは使用メモリ量が少ないです。2GBもあれば十分です。だれか遊んでみない?
なんとなく試してみた (スコア:1)
今は時間がないのであんまり中をみたりとかできないんですけど。
gcc-4.4.5 な gfortran でコンパイルしてテストを実行するところまでは
できました。(今動いたところなので終わってないけど)
もうちょっと時間ができたら中を見れるかも。とりあえず双極子の相互作用
で逆格子の何かをしているようなトコロだけは見ました。
ところで、コンパイルについてなんですけど、fftw3(3.2.2) の
configure で --enable-openmp と --enable-threads を両方つけると、
この二つは mutually exclusive だ、と怒られてコケました。
--enable-openmp だけでやったら動いたんですが、コレでいいんですか?
# 正確には --enable-openmp で作って libfftw3_omp.* という名前の
# リンクを作りました。ディストロによっては openmp 版のパッケージも
# あるのかな。とりあえず debian/squeeze ではなさそうでした。
あと、メモリは全然使わないですね。相当でかい系を作らない限り
100 MB にすらなかなか到達しないように見えます。
この辺はこっち側の MD といっしょですね。
Re:なんとなく試してみた (スコア:1)
Debian系はfftwパッケージにlibfftw3_omp.*が入っていないです。
そのせいでferamのコンパイルができなくて困っている人がいるようです。
Debianのfftwパッケージのメンテナに連絡を取ってみます。
3次元FFTの場合、libfftw3_threads.*よりlibfftw3_omp.*のほうが速かったのでlibfftw3_omp.*を使っています。
love && peace && free_software
t-nissie
fortran95を使いました。 (スコア:0)
NetWalkerでferamが動きました。
と言っても0.18.05ではfftwのopenMPが云々と言われてNGでしたので、
0.03.05をインストールしてみたら動作しているようにみえます。
でも、何だか分かりません。
YBa2Cu3Oδ-xの超電導体の計算の仕方を教えて......