Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 英特尔MKL pardiso赢得';t在fortran中并行运行_Multithreading_Fortran_Intel Mkl_Pardiso - Fatal编程技术网

Multithreading 英特尔MKL pardiso赢得';t在fortran中并行运行

Multithreading 英特尔MKL pardiso赢得';t在fortran中并行运行,multithreading,fortran,intel-mkl,pardiso,Multithreading,Fortran,Intel Mkl,Pardiso,我正在尝试让intel MKL版本的pardiso与多核一起工作。我用它来解一个结构对称的系统(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

我正在尝试让intel MKL版本的pardiso与多核一起工作。我用它来解一个结构对称的系统(
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
这些是my
ipram
参数。我什么时候有

F90FLAGS = ${F77FLAGS} -I${SOLIDroot} -openmp -mkl=parallel -d-lines -debug 
在调用pardiso之前,我还设置了MKL和openmp可用的线程数

调用mkl\u set\u num\u线程(3)
调用omp\u set\u num\u线程(3)

据我所知,如果允许或启用“足够”大的问题,所有MKL函数都将尝试使用多线程。我已经使用OMP实现了一些并行性,代码运行在几个内核上。我称之为pardiso的区域是串行的。我的问题是,让pardiso使用多核还需要什么

尝试使用
iparm
的默认值,即
iparm(1)=0
,没有任何更改

我无法添加注释(声誉不足)


您可以在运行代码之前尝试设置环境变量OMP_NUM_THREADS,看看是否有效。

请发布完整代码。您应该检查
iparm
数组。此数组有64个条目(不仅仅是20个),并且
iparm(3)
是保留的,应该为零。您是否尝试使用默认值(
iparm(1)=0
)运行?
call mkl_set_dynamic(0) ! disabling dynamic adjustment of the number of threads