计算化学公社

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

[Molcas] openmolcas并行的问题

[复制链接 Copy URL]

32

帖子

0

威望

1427

eV
积分
1459

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
按照这个链接离线安装OpenMolcas.md · main · Jingxiang Zou / qc_install_tutorials · GitLab安装好openmolcas-v25.02,配置好bashrc文件如下“# OpenMolcas-v25.02
pymolcas(){
        (
        export MOLCAS=/home/xx/softwares/OpenMolcas-v25.02
        export PATH=$MOLCAS/bin:$PATH
        export MOLCAS_WORKDIR=/home/xx/scratch/
        export MOLCAS_MEM=20Gb
        export MOLCAS_PRINT=3
        export MOLCAS_NPROCS=1
        export OMP_STACKSIZE=512M
         #export MKL_NUM_THREADS=8
        export MOLCAS_KEEP_WORKDIR=NO
        $MOLCAS/bin/pymolcas "$@"
        )
}
”然后运行一个测试例子,发现pymolcas -nt x A.input -f不管x是8,4,1的Wall时间基本上都是一样的,360s左右。htop运行时候可以看到确实有并行的。这里以-nt=8的为例,out文件看到一些如下信息1,”Parallel: OFF (GA=OFF)",,2,"       MOLCAS_DRIVER = /home/xx/softwares/OpenMolcas-v25.02/bin/pymolcas  |     MOLCAS_KEEP_WORKDIR = NO
  |       MOLCAS_NPROCS = 1
  |        MOLCAS_PRINT = 3
  |       MOLCAS_SOURCE = /home/xx/softwares/OpenMolcas-v25.02
  |    MOLCAS_STRUCTURE = 0
  |      MOLCAS_THREADS = 8", 3,"        &GATEWAY

                                   only a single process is used
                       available to each process: 20 GB of memory, 8 threads
                                            pid: 838400",最后的时间显示“ Timing: Wall=376.24 User=1396.40 System=117.32”。请问这个是什么原因呢?我的并行开了吗?下面引号是我运行的官网例子。“*DFT energy for CH4 at a fixed nuclear geometry plus a grid for visualization.
*
&GATEWAY
Title=CH4 molecule
coord
5
produced by gV
C   0.000000   0.000000  -1.246476
H   0.000000   0.000000  -0.152576
H   0.000000   1.021145  -1.636167
H   0.884337  -0.510572  -1.636167
H  -0.884337  -0.510572  -1.636167
basis=AUG-CC-PVQZ
group=C1
&SEWARD
&SCF
KSDFT=B3LYP
&GRID_IT
All”

4289

帖子

4

威望

9532

eV
积分
13901

Level 6 (一方通行)

MOKIT开发者

8#
发表于 Post on 7 day ago | 只看该作者 Only view this author
chenxl13 发表于 2026-2-9 18:48
谢谢你的回复,我一直用molpro和高斯做结构计算类的,现在想做过渡态和光化学和燃烧计算,是看到openmolc ...

这是因为今天ORCA非常强,是第二大量子化学软件(不考虑那些周期性第一性原理计算程序的话),大部分功能它都有了。不过如果你要说三选一,那我说还有更好的做法(至少在我看来是更好):我们可以使用每个程序最强最快的那几个功能,联用多个程序完成一个计算,使其计算时间短于 单使用一个程序的耗时。
自动做多参考态计算的程序MOKIT

32

帖子

0

威望

1427

eV
积分
1459

Level 4 (黑子)

7#
 楼主 Author| 发表于 Post on 7 day ago | 只看该作者 Only view this author
zjxitcc 发表于 2026-2-9 17:28
(1)你说的这些优势,是能算,不是算得快,或者说 不一定是指 算得快。你说的这些绝大部分 现在ORCA也能 ...

谢谢你的回复,我一直用molpro和高斯做结构计算类的,现在想做过渡态和光化学和燃烧计算,是看到openmolcas那个介绍的JCTC和JCP的介绍软件文章说的这个软件吊炸天。看来是免费的ORCA可能更合适这方面的计算。

4289

帖子

4

威望

9532

eV
积分
13901

Level 6 (一方通行)

MOKIT开发者

6#
发表于 Post on 7 day ago | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2026-2-9 17:32 编辑
chenxl13 发表于 2026-2-9 16:42
谢谢,我换了一个体系,发现同样的体系,改变基组有的基组下htop并行,有的串行。而且计算速度速度确实并 ...

(1)你说的这些优势,是能算,不是算得快,或者说 不一定是指 算得快。你说的这些绝大部分 现在ORCA也能算。注意,你看到文章里可没说ORCA不能算。OpenMolcas作为多参考计算领域主要程序之一,是因为历史原因,20年前就Molcas和Molpro是主力程序,不少课题组由于导师求学时的路径依赖而使用,而不是今天还有什么压倒性优势。
(2)OpenMolcas的RICD可以加速计算,大体系多参考计算必备(不是指活性空间大,是指体系大,比如单核、双核过渡金属搭配200个非金属原子)。
自动做多参考态计算的程序MOKIT

32

帖子

0

威望

1427

eV
积分
1459

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 7 day ago | 只看该作者 Only view this author
gravitylead 发表于 2026-2-9 11:24
个人感觉,OpenMolcas 的并行做得并不好,不想折腾的话用单核跑就行。

OpenMolcas 有两种并行方案,分别 ...

谢谢,我换了一个体系,发现同样的体系,改变基组有的基组下htop并行,有的串行。而且计算速度速度确实并行有的巨慢,我看说明书说超过8的并行不好,试了下确实。那这个软件发表在JCTC和JCP上说的神乎其神,什么光化学,分子磁性,过渡金属强关联,到底有优势吗?还是这个文章列的作者里面的圈子的自娱自乐。

32

帖子

0

威望

1427

eV
积分
1459

Level 4 (黑子)

4#
 楼主 Author| 发表于 Post on 7 day ago | 只看该作者 Only view this author
zjxitcc 发表于 2026-2-8 22:18
"available to each process: 20 GB of memory, 8 threads"说明是并行了。

我猜测你这个例子主要计算时 ...

谢谢换了一个体系,发现很奇怪,同样的体系,改变基组有的基组下htop并行,有的串行。

4

帖子

0

威望

491

eV
积分
495

Level 3 能力者

3#
发表于 Post on 7 day ago | 只看该作者 Only view this author
个人感觉,OpenMolcas 的并行做得并不好,不想折腾的话用单核跑就行。

OpenMolcas 有两种并行方案,分别是 mpi + Global Array 和 OpenMP。去年的时候我对这两种并行方案进行过测试。操作系统使用WSL下的 Ubuntu 24.04 LTS,编译器用的是 intel OneAPI 2025。mpi + Global Array 的并行方案会在使用 cmake 编译 Global Array 遇到一些奇怪的报错(cmake 似乎不能正确识别 ifx),需要使用 ./configure 进行编译。而 OpenMP 的编译方案不涉及 Global Array,会顺利得多。

我对编译出的程序进行了简单的 CASPT2 计算测试,发现相比于单核计算, mpi + Global Array 的并行方案可以显著提升 &SEWARD 和 &RASSCF 模块的计算速度,但是 &CASPT2 模块的计算速度会略微下降,且并行核数越多,下降越明显。OpenMP 的并行方案则恰好相反,&CASPT2 模块的计算速度显著提升,&SEWARD 和 &RASSCF 模块的计算速度明显下降。总体上看,两种并行方案都可以略微降低总体的计算耗时,但是远远达不到 “1+1 = 2” 的水平。我还尝试过基于 EMIL 控制 &SEWARD 和 &RASSCF 模块使用 mpi + Global Array 并行计算,&CASPT2 模块使用 OpenMP 并行计算,结果程序直接报错。

另外,我在 CentOS 7 系统的计算集群上使用相同办法编译的 OpenMolcas 在进行 mpi + Global Array 并行时,容易在 &CASPT2 模块产生 mpi 的报错,Ubuntu 24.04 LTS 没有这个问题。

总之,我对 OpenMolcas 的评价是,并行计算是一个非常大的坑,并行的效率不高,且容易出一些奇奇怪怪的bug。还是老老实实的用单核跑吧。

附一个用于统计 OpenMolcas 各模块运行时间的脚本:
gettime.py (3.11 KB, 下载次数 Times of downloads: 2)
运行脚本需要 python >= 3.4,以及 numpy。在终端中输入 python gettime.py molcas.out 即可。

4289

帖子

4

威望

9532

eV
积分
13901

Level 6 (一方通行)

MOKIT开发者

2#
发表于 Post on 2026-2-8 22:18:19 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2026-2-8 22:19 编辑

"available to each process: 20 GB of memory, 8 threads"说明是并行了。

我猜测你这个例子主要计算时间在单、双电子积分,这部分是由&SEWARD模块 串行计算的,并且只算一次,算完存在硬盘上(但要算很久,因为QZ角动量比较高),之后都是读取使用。&SCF里面的对角化和迭代占时间很少,因此总时间不会随核数改变 而有什么变化。你要想看到变化,需要一个较大的体系,使用中等基组(cc-pVDZ, def2-TZVP),这样&SCF可以达到或超过&SEWARD时间。
自动做多参考态计算的程序MOKIT

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

GMT+8, 2026-2-16 20:17 , Processed in 0.169804 second(s), 24 queries , Gzip On.

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