首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >intel MKL pardiso不能在fortran中并行运行

intel MKL pardiso不能在fortran中并行运行
EN

Stack Overflow用户
提问于 2015-11-05 16:15:28
回答 1查看 903关注 0票数 1

我正在尝试让英特尔MKL版本的pardiso与多个核心一起工作。我正在用它来解决一个有大约60K方程的结构对称系统(mtype=1)。

代码语言:javascript
复制
  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参数。在编译时,我有

代码语言:javascript
复制
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)

代码语言:javascript
复制
call mkl_set_dynamic(0) ! disabling dynamic adjustment of the number of threads

据我所知,所有MKL函数都将尝试使用多线程,如果允许或启用它来处理“足够”大的问题。我已经使用OMP实现了一些并行性,并且代码可以在多个内核上运行。我调用pardiso的区域是串行的。我的问题是,还需要什么才能让pardiso在多核环境下工作?

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

EN

回答 1

Stack Overflow用户

发布于 2015-11-06 06:20:41

我无法添加评论(没有足够的声誉)。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33539521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档