みんなが元気でいることを願っています。
計算を並列化するためにクラスターで OpenMP を使用しています。まばらな方程式系を解くために、UMFPACK にもリンクしたいと考えています。UMFPACK は OMP ブロックでは使用されません。
しかし、コードを実行すると、並列化がうまくいかないことがわかりました。htop を使用して CPU を監視します。20 個の CPU が実行されていると書かれていますが、バーはそうではないことを示しています。
また、私のコードは、-lumfpack でリンクしない場合よりもはるかに遅く実行されます。実際、-lumfpack を使用してライブラリにリンクしていない場合、htop は次のように表示されます。
次のコードを使用して、コードをコンパイルして実行します。
module load suitesparse/5.6.0
gfortran main.f90 -lumfpack -o main.out -O3 -fopenmp -ffree-line-length-none -Wno-unused -fimplicit-none -Wall -fcheck=bound,do -ffpe-trap=invalid,zero,overflow
./main.out
UMFPACK は OMP ブロックで使用されていないため、-lumfpack
競合するのはなぜ-fopenmp
ですか? それらをどのように連携させていくかを考えていました。アドバイスをいただければ幸いです。ありがとうございました!