ユーザー支援事例報告

このページでは、完了しましたユーザー支援でどのようなことをしたかということを報告していきますので、ぜひご覧ください。コメントや質問がありましたら、 jicfus-support-at-ccs.tsukuba.ac.jp (-at-を@にして下さい)までお送りください。

計算の概略 原子核の見せかけの励起状態を求める
使用言語 Fortran90, MPI
問題 上記計算のため、十万次元くらいのエルミート行列を用いた連立線形方程式を解くプログラムがほしい。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 磁気流体シミュレーションコードの空間解像度を部分的に挙げるために非一様格子を導入する
使用言語 FORTRAN
問題 2013年の千葉大学の磁気流体シミュレーションサマースクールで作成したHLLD法によるMHDコードへの、非一様メッシュの導入に伴う諸問題。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 流束制限拡散近似を用いた輻射輸送方程式(線形拡散方程式+非線形方程式)を陰的に解く。
ニュートン・ラプソン法とマルチグリッド法(スムーザ=SOR 法)を用いている。
使用言語 FORTRAN
問題 MPI を用いて領域分割で並列化しているが、並列効率が悪いので、問題点を特定の上、改良したい。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 スパコン上でC言語を用いた複素指数関数計算について(原子核の励起状態の計算)
使用言語 c
問題 基研のSR16000 上のIBM 製xlc で複素数の計算を行いたいと考えています。しかし同等のFortran のコードと比較して、C のコードは4倍以上も遅くなると言う問題が生じています。原因を調べた結果、特に標準ライブラリlibm.a 中の複素数cexp がFortran と比べて異常なぐらい遅い事がわかりました。おそらくcexp を自分で置き換えたりするのが一般的な方法でしょうが、その場合は複素数cexp が提供されているその他のライブラリをご存知ないでしょうか?またこのような場合、他に何か解決策があるのでしょうか?同じくC をお使いの方が、このような問題が生じた時に、一般的にどのように対処されているのか、お知恵を拝借させてください。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 メインプログラムからの MPI サブルーチンの呼び出し、行列積に関する MPI 化について
使用言語 FORTRAN
問題 bosonic BFSS 行列模型のコードで、MPI を用いないシリアルなコードからMPI を用いて並列化することを目指している。この際、行列の積A*B=C 演算部分が計算時間の大半を占めるため、この部分を並列化することを目指す。しかしながらそのMPI 化した行列積演算部分をサブルーチンとしてメインプログラムから呼び出そうと試行錯誤したがうまくいかない。MPI 版を正しく動作するようにしたい。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 Lattice QCD における gauge fixing
使用言語
問題 Lattice QCD の計算を行っているのですが、現在、(Coulomb) gauge fixing を、lattice QCD
library の一つ、CPS (The Columbia Physics System) を用いて行っています。しかし、コードの実効
効率が非常に低いため (例えば 32^3×48 lattice を KEK SR16000 1node で計算する時の実効
効率は 2-3%程度)、もっと効率の良いコードを使いたいと思っています。お薦めのコードなどあれば紹介
していただけるでしょうか。
特に、GPGPU (HA-PACS)で高速な gauge fixing ができれば非常に助かるので、その辺りも調査し
ていただければと思っています。
よろしくお願いします。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 コードのバージョン管理、メンバーでの情報共有について
使用言語
問題 依頼内容 コード開発に関わるメンバーが多くなり、コードのバージョン管理を効率的に行い、研究や開発上の情報を後で参照/集約する方法を探している。またコードのモジュール化を進めて、複数のメンバーで開発やチューニングを行うための体制を作りたい。これまでの格子QCDコード開発では共同作業体制がうまくいっていると聞いているため、そこで得られたノウハウを教えて欲しい。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 ユニタリ行列のオイラー角分解
応用としては格子QCDコードのメモリ量/帯域ないし演算負荷の軽減を考えていますが、割と基礎的な内容の数学の質問となります
使用言語 c, c++, N=2,3ではMaximaを使ってEuler角から合成はしてみましたが、分解まではできていません
問題 UをU(N)ないしSU(N)のNxN複素行列とします。
このとき、次のような分解が可能であるように思えます。
U = ADB,ただしA, BはSO(N)の実回転行列、Dはexp(i diag(φ_1, φ_2,…,φ_N))となるような複素対角行列で、UがSU(N)のときはφ_iの総和は0とします。
A, D, B ∈ U(N) or SU(N)なのは明らかなのでこれらの積もU(N) or SU(N)になります。
自由度を数えるとA, BについてはN(N-1)/2、DについてはN or N-1で、合わせてN^2 or N^2 -1で、数合わせの上ではこれでよいように見えます。肝心の質問ですが
・このような分解は常に可能か、可能ならABの符号を除いて一意か?
・このような分解をするには、実際にどんな計算をすればよいのか?
です。
使用する計算機(予定も含む):「京」、その他B/Fの低い計算機全般。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 随伴表現フェルミオンを含むラージNゲージ理論のシミュレーション
使用言語 FORTRAN, Fortran90
問題 随伴表現フェルミオンを含むラージNゲージ理論のシミュレーションをしています。そこでは、N×Nサイズの行列の行列-行列積を何度も計算します。
N=64の場合に、行列-行列積を高速に計算する方法が知りたいです。
あるいは、1000より小さいNで、計算効率が良いN
の値があるならば知りたいです。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 QCDのシミュレーションにおいて、BlueGeneで大きなゲージ配位を書き出す
使用言語 Fortran
問題 高速化したい。配位が大きい(32^^3 *64)の時、IOに非常に時間がかかって困っている。
他の格子サイズのものと同じ型の出力ファイルにしたいので、中身を変えることは避けたい。
多分、MPIをうまく使ってやる方法があると思うのですがわからないので、具体的に書き方を教えて欲しい。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)
計算の概略 時空計量、物質場、速度場、光子温度の各揺らぎの二次摂動までを取り入れた、宇宙マイクロ波背景放射の温度揺らぎについての Einstein-Boltzmann solver。
使用言語 c, c++, (fortran も読むことはできます)
問題 時間変化に乏しい関数 F(t) と球ベッセル関数 j_l(t-t_0) の積ついての積分:\int_{t_1}^{t_2} F(t)j_l(t-t_0) dt を倍精度実数の範囲で精度よく行なうアルゴリズムを探しています。
添字 l をある程度大きく取ると、球ベッセル関数は正負の値を取って激しく振動します。そのため、ナイーブに時間刻みを取って(たとえば等間隔に取って)足し上げると、一定の精度を保つために相当量の時間刻みを必要としてしまいます。一定の精度を保ちつつ、できるだけ少ない時間刻みでこの積分を行なえるアルゴリズムがあれば、それを教えていただけませんでしょうか。参考にはなりますので、球ベッセル関数に限らずとも、同様の振動関数に関するものでも構いません。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 円筒座標HLLDを用いた銀河衝撃波の再現
使用言語 c
問題 円筒座標において、HLLD法を用いて銀河円盤での渦状腕衝撃波の再現を行っています。衝撃波部分で数値振動が発生し計算が破綻してしまいます。斜め衝撃波を安定に解くために、特殊な計算方法を取り入れる必要があるのでしょうか。是非ご教授いただきたく存じます。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 格子理論の摂動論のための疎行列係数連立方程式の直接解法について
使用言語 FORTRAN
問題 格子QCDの摂動論でほぼツリーレベルのクォーク伝搬関数を大量(空間運動量毎に)に解こうとしています。
最大 50000×50000 ぐらいのディラック演算子に対応する疎行列を係数に持つ連立方程式を、大量に(最大64^3=262144個=運動量の違い)解く必要が有ります。
運動量については完全独立なので MPIで並列化しています。
1ノード内では 50000×50000の疎な係数行列の連立方程式を MPI並列で割った後の部分についてそれなりの個数解きます。
密行列直接法(LAPACK, Intel MKL)では、時間がかかりそうです。
現在、疎行列の直接法で複素係数非対称疎行列に対応しているSuperLUが入手のハードルが低くそれを用いています。
SuperLU を1thread で試したところ係数行列の次元が大きくなると MKL LAPACKにまさるようです。
OpenMP(multithread)で更に高速化しようとしていますが、SuperLU_MT がうまく動きません(時々変な答えが出ます)。
コンパイルに失敗しているのかもしれません。
SuperLU(single thread)を無理無理複数の問題を multithread
で同時に解くことも試みましたが、therad-safeで無いのか動作成功していません。
疎行列の直接法で1ノードで multithread対応の速い奴はどのようなものがありますでしょうか?
複素係数非対称疎行列です。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 QCD計算向け線形方程式ソルバの性能評価
使用言語 Fortran 90
問題 線形方程式ソルバは様々な種類があるが、QCD計算に対する各線形方程式ソルバの性能評価をして欲しい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 boost ライブラリのインストール方法
使用言語 C++
問題 C++ のboost ライブラリのインストール方法を教えていただけませんでしょうか。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 ガス降着によるブラックホールの成長と、その活動性を理解する事を目的として輻射、磁場、相対論効果を取り入れた流体計算を行う。
使用言語 FORTRAN
問題 文末に記載してあるような多重ループのopenmpを用いた並列化を行っています。多重ループの一番外側をopenmpを用いて並列化しているのですが、計算するモデルによっては一番外側のループが小さいため、openmpを用いた並列化の効率が出ません。例えば一番外側のループ長が小さい場合、その一つ内側をopenmpで並列化する、というように動的に並列する場所を変更することは可能でしょうか?
!$omp parallel do private(i,j)
do k = 1, 3 ! do j = 1, 128
do i = 1, 128
(処理)
enddo
enddo
enddo
!$omp end parallel do
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 磁気流体コードへの異常抵抗の実装について
使用言語 Fortran
問題 宇宙磁気流体・プラズマシミュレーションサマースクールで作成したMHDコードを現在研究に用いています。HLLDスキームのコードなのですが、太陽フレアの問題を解くため、そこに異常抵抗を導入したいと考えています。ソースタームに異常抵抗による電流の拡散項を入れたのですが、差分化の問題なのか、数値振動が起きてしまって、なんとも計算がうまく行きません。何か良い方法があれば教えていただければありがたいです。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 なし、不特定
使用言語 Fortran90
問題 あるfortran90の技術に関する質問です。最近次のようなことが可能であることを知りました。
integer :: myrank
character*9 :: myrankchr
myrank = 0

ここまでが準備で
write(myrankchr,'(i9)') myrank
としますとmyrankに入っている整数型の値が文字型に変換されmyrankchrに格納されます。対応するopen文はありません。
この技術を用いますとたとえば番号を含むファイル名を指定したいとき便利です。ところが、私の調べた限りでは、どのマニュアルにも教科書にもこの技術は書かれていません。そこで質問ですが、この技術はどのプラットフォームでも使えるのでしょうか。
それとこの技術は、私には奇想天外に見えます。一体どういう機構でこのような変換ができるのか説明できる方がいらっしゃいましたら説明をお聞かせください。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 省メモリ型の大規模連立一次方程式解法
使用言語 MPI, OpenMP
問題 低次元電子系におけるスペクトルおよび励起状態の性質を調べるために,励起エネルギーごとにいわゆるsorrection vector を求める.4 × 109 のオーダーの次元を持つ大規模行列の連立方程式を共役勾配(CG)法で解く.大規模疎行列問題をスーパーコンピュータの上で解いています.CG 法を使っているのですが,解きたい問題サイズではメモリがぎりぎり足りません.反復法で,CG 法よりも使用メモリが小さいアルゴリズムを紹介して頂けないでしょうか.行列は実対称です.
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 PC上で開発した数値計算プログラム
使用言語 C++
問題 local PCで開発し、正しく動作しているプログラムを大型計算機(BlueGene/Q)上で使おうとすると、makeが通らなかったので、大型計算機上でmakeを通るようにし、PCで計算した場合と同じ結果が得られることを確認したい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 チューニングの練習
使用言語 Fortran90, MPI, OpenMP
問題 京コンピュータ上で用いるコードのチューニングの練習のために簡単なfortran90コードの実効率を上げようとしています。精密プロファイラ(PA)を用いた解析によれば、
Flops-peak ratio 15.98%
SIMD instruction rate 0.00%
Cache miss rate < 0.01%
Execution time items:
Four instruction commit rate 4%
Two or three ins. com. rate 39%
One ins. com. rate 47%
です。どうすればSIMD率が上がるかお教えを乞いたいと思います。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 複素対称(密)行列の対角化
使用言語 FORTRAN, MPI
問題 数万次元程度の複素対称(密)行列の対角化プログラムを大規模並列計算用に拡張し、計算の高速化を図りたい。
解決法、参考情報 詳しくはこちらをご覧ください
パッケージのダウンロード(1.2MB)
計算の概略 格子QCDによる4点相関関数計算の並列化
使用言語 C++, MPI
問題 格QCDの4点相関関数計算をスーパーコンピュータによる大規模計算に適用するため、プログラムを大規模並列計算用に拡張し高速化したい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 OpenMPをこれから手動で導入したい
使用言語 FORTRAN, C, C++, MPI, OpenMP
問題 C++、C またはFORTRAN で書かれた数値計算プログラム。MPI を使って大型の並列計算機で動くようになっているが、スレッド並列(SMP) はコンパイラの自動並列化に任せている。
OpenMP を使って現在の計算コードの効率を上げたいが、OpenMP についてほとんど知らないので、これらを使うにあたってお薦めの資料、文献などあれば教えてください。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略
使用言語 C
問題 2Gbを超えるデータをCで一度にファイルに出力するにはどうすればよいですか。
解決法、参考情報 fopen, fread, fwrite, fcloseを使えばよろしいです。そうでないと割り込みの排除が保証されません。
計算の概略 シミュレーション結果の3次元ボリュームレンダリング
使用言語 Interactive Data Language
問題 Interactive Data Language(IDL)を用いて3次元空間データの可視化及び解析を行っています。IDLを用いて3次元の可視化やボリュームレンダリングをする方法がありましたら教えていただけませんでしょうか。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 1次元unitary行列模型の時間発展問題の解析
使用言語
問題 円周上のN体のfermionの運動はMathieu関数で記述されることが知られています。
そこでMathieu関数を扱えるライブラリを教えて欲しいです。
またMathieu関数の積分も必要なので精度の良い積分の方法も教えていただけると助かります。
解決法、参考情報 Mathieu関数に関してはこちらをご覧ください
数値積分に関してはこちらをご覧ください
計算の概略 格子QCD計算から現れる線形方程式に対するmultigrid法について
使用言語
問題 格子QCDの線形ソルバーで、最近、multigrid法が非常に良いという報告があり、試してみたいのですが、論文(Babich et al., Phys. Rev. Lett. 105 (2010) 201602など)を見ても具体的にどうやっているのか良く分かりません。
1.multigrid法の一般の考え方について
2.格子QCD計算に適用する具体的な方法について
を解説して頂けると助かります。
解決法、参考情報 問題1についてはこちらをご覧ください
問題2についてはこちらをご覧ください
計算の概略 ΛN散乱断面積の計算
使用言語
問題 Λ粒子と核子の相互作用が中心力ポテンシャルで与えられている場合の、ΛN散乱断面積の計算の手順を教えてください。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 アスキーデータを高速に数値化するルーチン
使用言語 C、C++
問題 数値のデータを読むときに、バイナリー形式で入出力をすれば速いのは分かっているのですが、可読性などの理由からアスキー形式を使いたい場合も多いです。そのような際にデータが大きいと、読み込みとデータの数値化にずいぶんと時間がかかってしまいます。アスキーデータを高速に数値化するライブラリや、定番のルーチンなどご存知でしたら、教えていただけると助かります。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 3次元MHDシミュレーション結果の可視化
使用言語 IDL (Interactive Data Language)
問題 3次元MHDシミュレーションの結果から、IDLを用いて磁力線構造の可視化を行いたい。また、可能であれば、磁力線構造が変化する様子を示すムービーを作成したい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 2Gbを超えるデータをCで一度にファイルに出力する
使用言語 Fortran
問題 これからFortran77コードのFortran90への書き換えを考えています。参考になる、公開されているFortran90のコードがありましたら教えてください。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 原子核のある反応の遷移確率の計算
使用言語 Fortran90
問題 複素数を引数とするガンマ関数の、精度と効率の点でよい数値計算の方法が知られていましたらお教えください。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 宇宙論的な相転移のシミュレーション
使用言語
問題 3次元の lattice シミュレーションを使って、古典スカラー場の発展を解きたいと考えています。最終的にはスカラー場のグローバル相転移で生成される宇宙論的な重力波を計算したいのですが、もしすでに開発されているコードで適切なものがあればお教えいただけないでしょうか。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 弾性球間の付着力を考慮したN体コードへの OpenMP の実装
使用言語 Fortran
問題 二粒子間の重心間距離で決まる法線方向の斥力/引力(JKR theory)に加え、弾性球のスピンに関連した様々な剪断応力(付着力)も考慮したN体計算コードのOpenMP による並列化を試しているがシリアルコードに比べ実時間は短縮されない。(計算時間の9割を占める「接触ペアの相互作用計算」部分などを OpenMP にて並列化した。)加速しない原因や改善策についてアドバイスを頂けると助かります。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 SU(N) random matrix
使用言語
問題 一様でランダムな SU(N)行列の生成方法を教えてください。特に、Nは特定の整数ではなく一般の整数の場合、つまり、N=2,3,4,…の時のランダムなSU(N)行列生成法が知りたいです。
生成された行列は群の一様な積分測度であるHaar測度の基本的な性質を満足するようになっていてもらいたいです。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 multi-mass solver
使用言語
問題 低次元の超対称ゲージ理論の並列計算用のコードを開発しているのですが、その系では、質量シフトを伴う疎行列の逆行列を解くアルゴリズム”multi-mass solver”が必要になります。
目下のところ、 B.Jegerlehnerの”Krylov space solvers for shifted linear systems”のp10にあるMultimass shift BICGStabのアルゴリズムを用いています。
より高速な”multi-mass solver”のアルゴリズムがあればお教えいただけないでしょうか。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 線形方程式の解法について
使用言語
問題 対角スケーリング前処理付きCG法およびBi-CGSTAB法を用いて線形方程式を解いている。
この際、問題サイズを変えると解法が収束しなくなった。
1. 似たような問題で急に収束が悪くなるのが何故なのか原因を特定するために、どういうことを調べていけばよいか、助言を頂きたい。
2. もしより良いアルゴリズムがありそうなら、紹介して頂けると有難い。
問題の詳細はこちらをご覧ください
解決法、参考情報 詳しくはこちらをご覧ください
概略 Power Pointスライドのアニメ化
使用言語
問題 Power pointの自動ページ送りを用いてアニメのように見えるプレゼンテーションをつくりました。これをビデオファイルに変換する方法はありますでしょうか。Power point内で使えるフォーマットだとよいのですが。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 電磁流体(MHD)コード
使用言語 Fortran 90
問題 MHD コードの最適化。経験的に slope limiter 部分が遅いような気がするので、効率的な実装方法があれば助言をいただきたい。また、配列の添字の順番を変えると高速化できるか? 変数を引数で渡すのではなく、Fortran 90 のモジュールを使ってグローバル変数化すると速くなるのか? コードの構造への助言がほしい。将来の発展(3次元および円柱・極座標系への拡張)を考えて、今のうちにコードの構造を整理しておきたい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 原子核の平均場に関する情報(束縛エネルギー、密度分布、核子の軌道など)をGogny力を用いたHartree-Fock-Bogoliubov(HFB)の方法で求める。
使用言語 FORTRAN
問題 以下のように、多重ループがあってその中に条件文があり、計算が実行される場合とされない場合があります。このような場合に、cpuのロードバランスがなるべく偏らないように並列化するにはどのようにすればよろしいでしょうか。

do i1 = 1, Nmax
do i2 = 1, Nmax
do i3 = 1, Nmax
ia = SomeFunction(i1, i2, i3)
if( ia .LE. Nmax ) then
calculations
else
end if
end do
end do
end do
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 硬い常微分方程式を解くこと
使用言語 Fortran90
問題 1階常微分方程式を解くサブルーチンにJacobianをインプットとして与えるオプションがある。これを与えると計算が速くなるか。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 1階常微分方程式を大次元空間で解く
使用言語 Fortran90
問題 硬い微分方程式(解くのにとても長い時間がかかる)を解くのにできるだけ良い方法またはサブルーチンを知りたい。
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 少数粒子系の束縛状態を励起状態も含めて解く方法として、変分法の提案
使用言語 言語を特定しない、一般的な説明
問題 量子力学的少数多体問題で、基底状態だけでなく、励起状態まで含めて系統的に解くにはどのような方法があるでしょうか?
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 中性子星磁気圏のプラズマシミュレーション
使用言語 C++
問題 粒子間の相互作用はGrapeで高速化しているが、それ以外の粒子軌道追跡はホストコンピューターで行っており、ここの部分を高速化したい
解決法、参考情報 詳しくはこちらをご覧ください
計算の概略 ユーザーが定義した関数の極小値を求める。
使用言語 Fortran, C++
問題 上記の計算のためのライブラリminuitのマニュアルとソースコードはどこにありますか。
解決法、参考情報 マニュアルおよびソースコードの情報は、
http://www.cern.ch/minuit
にあります。

コメントは受け付けていません。