1
我正在嘗試獲取英特爾MKL版本的pardiso以使用多個內核。我用它來解決具有大約60K方程的結構對稱系統(mtype=1
)。英特爾MKL pardiso將不會在Fortran中並行運行
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
並沒有改變
請發送完整的代碼。 – Jeff
你應該檢查你的'iparm'數組。這個數組有64個入口(不僅20個),並且'iparm(3)'被保留,應該爲零。你是否嘗試用默認值運行('iparm(1)= 0')? – Stefan