计算化学公社

 找回密码 Forget password
 注册 Register
Views: 15719|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[Multiwfn资源与经验] 用 OMP_NUM_THREADS 环境变量控制 Multiwfn(for Linux) 并行线程数的补丁

[复制链接 Copy URL]

230

帖子

0

威望

935

eV
积分
1165

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 stecue 于 2017-4-25 02:55 编辑

OMP_NUM_THREADS是控制OpenMP并行线程数的标准环境变量。Multiwfn的内置控制方法虽然便于理解,但是写成脚本使用时就不太方便。如果支持OMP_NUM_THREADS环境变量,可以直接用OMP_NUM_THREADS=n Multiwfn 来指定并行线程数为n(如果不指定则使用最大可用线程数),用到脚本里或者在.bashrc里写成alias就很方便,尤其适合手头上有多台计算机、多种并行环境的情况。为此,我稍微修改了一下3.3.9的源文件,包括补丁在内的源码在附件中。另外,为了减小附件体积,我直接在make文件里要求静态链接mkl库,一般安装有ifort的机器都附带mkl核心库(即使没有单独安装MKL),应该不会出现找不到库文件的情况。

Multiwfn_3.3.9_src_Linux_noGUI.tar.gz (713.63 KB, 下载次数 Times of downloads: 12)

用法:下载解压后在bash中直接运行./Multiwfn_noGUI.sh 即可,请确保安装了intel fortran compiler,如果有intel MKL更好。如果一切正常,你应该可以在Multiwfn_3.3.9_src_Linux/noGUI中找到编译好的支持OMP_NUM_THREADS的Multiwfn。你仍然可以用菜单设置并行线程数。逻辑是:如果交互菜单设置的并行线程数不为0,则由菜单设置的并行线程数决定实际线程数。如果菜单设置的并行线程数为0(这是默认情况),则由环境变量OMP_NUM_THREADS决定。如果没有OMP_NUM_THREADS环境变量,则使用OpenMP的最大默认线程数。对于使用单个8核16线程CPU的机器,就是16。

评分 Rate

参与人数
Participants 4
eV +20 收起 理由
Reason
zsu007 + 5 赞!
sobereva + 5
wuy069 + 5 好物!
rtransformation + 5 谢谢

查看全部评分 View all ratings

51

帖子

0

威望

2590

eV
积分
2641

Level 5 (御坂)

2#
发表于 Post on 2017-4-25 08:14:26 | 只看该作者 Only view this author
嗯,在Linux上提交Multiwfn作业,特别是在集群上多用户同时使用multiwfn,每次都要用sed来替换nthread核数,然后把settings.ini重定向到用户提交作业的当前目录下,尽管是用脚本改。非常感谢!!!

51

帖子

0

威望

2590

eV
积分
2641

Level 5 (御坂)

3#
发表于 Post on 2017-4-25 10:22:06 | 只看该作者 Only view this author
把修改后define.f90里的这两行去掉
PRINT *, 'OMP_NUM_THREADS = ', currNThreads
PRINT *, 'Number of threads = ', rtNThreads

没必要加上这两行,Multiwfn在最开始就会判断并行的核数;加上这两行,输出文件每进行下一步时都会输出OMP_NUM_THREADS = 和 Number of threads =,觉得没多大必要,原谅我有小小的强迫症。自己编译时已改

不过还是希望Sob大神在以后的linux版本中增加OMP_NUM_THREADS环境变量控制并行核数。

230

帖子

0

威望

935

eV
积分
1165

Level 4 (黑子)

4#
 楼主 Author| 发表于 Post on 2017-4-25 10:38:46 | 只看该作者 Only view this author
wuy069 发表于 2017-4-25 08:14
嗯,在Linux上提交Multiwfn作业,特别是在集群上多用户同时使用multiwfn,每次都要用sed来替换nthread核数 ...

嗯,我没设过settings.ini,那个看代码似乎是等价于交互式菜单设定,好像优先级比OMP_NUM_THREADS高吧?如果有旧的settings.ini可能还要把nthreads改成0哈。

230

帖子

0

威望

935

eV
积分
1165

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2017-4-25 10:45:21 | 只看该作者 Only view this author
wuy069 发表于 2017-4-25 10:22
把修改后define.f90里的这两行去掉
PRINT *, 'OMP_NUM_THREADS = ', currNThreads
PRINT *, 'Number of t ...

所以如果 sob 大神直接把代码放到 github 上,大家提交补丁就方便多了啊哈。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-14 13:26 , Processed in 0.305931 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list