複数のコアで動作するように pardiso の Intel MKL バージョンを取得しようとしています。mtype=1
私はそれを使用して、約60Kの方程式で構造的に対称なシステム( )を解きます。
iparm= 0
iparm(1) = 1 !
iparm(2) = 3 !
iparm(3) = omp_get_max_threads() !
iparm(4) = 0 !
iparm(5) = 0 !
iparm(6) = 0 !
iparm(7) = 0 !
iparm(8) = 9 !
iparm(9) = 0 !
iparm(10) = 13
iparm(11) = 1
iparm(12) = 0
iparm(13) = 0
iparm(14) = 0
iparm(15) = 0
iparm(16) = 0
iparm(17) = 0
iparm(18) = -1
iparm(19) = -1
iparm(20) = 0
これらは私のipram
パラメータです。コンパイルするとき、私は持っています
F90FLAGS = ${F77FLAGS} -I${SOLIDroot} -openmp -mkl=parallel -d-lines -debug
pardiso を呼び出す前に、MKL と openmp で使用できるスレッドの数も設定します。
call mkl_set_num_threads(3)
call omp_set_num_threads(3)
call mkl_set_dynamic(0) ! disabling dynamic adjustment of the number of threads
私が理解している限り、すべての MKL 関数は、「十分に」大きな問題に対して許可または有効化されている場合、複数のスレッドを使用しようとします。私はすでに OMP を使用していくつかの並列処理を行っており、コードは複数のコアで実行されます。私が pardiso と呼んでいる地域はシリアルです。私の質問は、pardiso を複数のコアで動作させるには他に何が必要ですか?
のデフォルト値iparm
、つまりiparm(1)=0
で試してみましたが、変化はありませんでした