计算化学公社

标题: win平台下最新版Gaussian16使用经验分享 [打印本页]

作者
Author:
tjchkj    时间: 2017-12-4 16:12
标题: win平台下最新版Gaussian16使用经验分享
本帖最后由 tjchkj 于 2017-12-7 16:04 编辑

看到论坛里几乎是清一色的在linux下使用Gaussian16的交流,使我这个linux门外汉感到居然找不到在windows平台下的任何前人的经验可以借鉴。找遍整个互联网也是没有什么发现,所以不得不潜心自己摸索一下。
先说一下运行环境:
软件:Gaussian 版本: Gaussian 16R A.03 WIN64, VERSION 1.1 单用户版。win10 64位版,win7旗舰版 64位版.
硬件:双路E5-22696v4(44核心)@2.2G ,超微X10DAL-i主板,三星原厂REG ECC 8G*8 总计64G内存。OCZ VECTOR 180 256G固态盘,显卡GTX750-2G,硬盘ST2000NM0033 ES.03 企业级2T。电源900瓦。满载cpu最高温度62度。
在win10下,无论是否打开和关闭超线程,观察Gaussian 各个模块,明显比I5 4440 的机器跑相同任务慢一个量级,因此不是两种cpu主频高低差别问题造成。在win7下也发现类问题。而关闭超线程后,win7下各个模块运行速度完全正常了。因此,可以得到结论就是在windows平台下使用Gaussian16,必须关闭超线程。
下面针对44核心的机器,做一些使用方面的经验,少于44核心的机器,可以类似参考。
一、Link 0中cpu使用的方法
1、老指令%nprocshared,可以用到所有的cpu核心。所以这个机器可以使用到44核心,即%nprocshared=44 可正常用,但这样使用每个cpu核心的使用率不很充分,瞬间cpu总使用率可达99%,但平均总使用率不到50%。测试发现,如果空出几个核心,可以达到计算用时短的效果,我这里是%nprocshared=42最佳。
2、新指令%CPU。该指令可以在任务中选择特定的核心。参数后面跟随用逗号分隔的核心列表例如%CPU=4,5,6,33,43等,或者用核心范围,例如%CPU=3-17 等.
探索发现这里存在bug,就是说%CPU这行核心列表里到最后一位字符,最长字符不能超过57个(win10里不能超过60个),去掉%CPU=这5个字符,在win7中核心列表字符最长是52个。即便你使用核心范围表示也是如此规则。
二、cpu核心限制
1、由于2中所出现的BUG问题,导致目前该版本的核心使用受到制约,采用%CPU指令时,最多核心的上限是21个(win10中是22个),如果你的核心列表里,没有使用到0-9这样单个字符表示的核心,那样能使用的核心只更会少而不会多。因为用范围表示的时候都是转换为列表来进行的。
2、采用多开的方式可以同时运行多个任务。我们知道在win平台下开一个Gaussian窗口只可以跑一个任务,但可以多开窗口实现同时跑多个任务。实验中可以做到1分钟同时运行起32个窗口,每个窗口都是调用BCF文件去运行。每个bcf中可以有上千行任务。这样可以一次投递几万个任务进去。
3、测试表明,Gaussian16 用%CPU=格式指定cpu使用的核心上限是32.不知道是他们用于开发的机器是只有32核心呢,还是在程序中存在BUG,定位核心的时候,采用了MOD函数,把你输入的cpu核心按32整除后得到的余数来定位cpu核心。也就是说,你即便是使用一个核心,这个值大于32就会按整除32后的余数去找核心。这样你多的核心就无法使用了。
三、从cpu负荷率来换个角度看并行效率
    我们采用一个测试样本,由于指定核心职能最多用21个,测试了两种方式的cpu使用,完成任务时间比较接近。
    以下研究的是多开计算的对比数据:
    单开 share = 44  时间是7:46 ;单开 最佳42 核心 用时3分41秒。
    四开 share = 11  用时10分10秒。      折算为 单个用时2分32秒,
    可见,如果算多任务,宜采用多开。
    另外 如果采用指定核心方式,则对于多任务计算的最佳方式就是32开每个指定1核心,折算后单个任务花费的时间是最少的。比较数据就略去不再赘述。如果你一次计算的任务不超过32个,可以适当组合一下,可以采用16开双核心,8开4核心,4开8核心,2开16核心的方式。或者是采用多开不均匀核心,比如三开:两个11核心加一个10核心这样做。四、采用缓存,利用机器的大内存对运算中的临时文件做缓存,我把scratch单独放在磁盘靠近中心的盘符里,用superchche 64位的来做缓存,大大降低磁盘的读写频次。懒写延迟可以任意设置。注意对系统盘不要做懒写。图中可以看到浅蓝色是读缓存命中。

有了大量多开,多窗口友好的界面,加上缓存运用,配合Gaussian View6 直接可视化的工具,在windows下直接运行Gaussian1做计算,就是一件愉快而高效的事情了,相信更多的人会越来越喜欢在windows下做运算了吧?运算的同时,你可以办公,写论文,娱乐休闲,一台机器就解决问题了。鉴于最后那个缓存scratch读写硬盘很多。我后来直接把scratch用RAMdisk 用内存虚拟成一个盘符,这样直接连supercache都不用给它分配内存了。而且是比supercache效率高的没法比。









作者
Author:
tjchkj    时间: 2017-12-4 16:13
另外用linux来做的大师们看看,上述cpu核心数的使用限制,在linux版里是否存在?
作者
Author:
sobereva    时间: 2017-12-4 16:33
linux没%CPU最多设32核这个问题,如这个帖子的情况,%CPU指定用36核心没问题
正确看待超线程(HT)技术对计算化学运算的影响
http://sobereva.com/392

Win32 Gaussian用的人很多,只不过没有对计算资源限制的Win64 Gaussian极少有人用,网上没有,售价也太贵,Site license比Linux版都贵,再加上跑计算的机子绝大多数都是Linux的,因此极少有人讨论Win64 Gaussian的使用。

作者
Author:
tjchkj    时间: 2017-12-4 16:47
本帖最后由 tjchkj 于 2017-12-4 17:14 编辑
sobereva 发表于 2017-12-4 16:33
linux没%CPU最多设32核这个问题,如这个帖子的情况,%CPU指定用36核心没问题
正确看待超线程(HT)技术对计 ...

后来加上了缓存的使用,使得scratch文件的磁盘读写得到最大的优化。看了你那篇超线程的文,和我测试基本一致。但我这里在超线程下,模块没有优化,所以反而更慢的多。而且指定cpu不能超21个,编号还有上限32这个问题。看来linux版他们还是下了功夫,而windwos64位版,他们还是有很多漏洞。G16w 的win64 单用户版没有人在用吗?我现在最关心的是超过32核心那富裕的12核心要是能用上就好了。如果你不用指定核心,采用shared方式,在多开的时候,会导致不同的任务去混用相同的核心,出现调度混乱争抢cpu核心,大大降低了效率。
作者
Author:
liyuanhe211    时间: 2017-12-4 18:51
本帖最后由 liyuanhe211 于 2017-12-4 18:55 编辑

其他先不说。关于同时运行多个任务的问题,注意需要考虑每个任务不是同时结束的,且结束的时间很难有明确的预期,这使得有多个任务(但又不太多)时,会出现任务拖尾的问题。

例如有32核,共4个任务,跑4*8核任务的总CPU时间会比1*32核任务要短,但其中一个任务的耗时可能比其他三个都长,这使得任务最后只余耗时最长的任务在只用8个核跑,其他核闲着,使得Wall time不一定低。如果变成32*1核任务,这个问题就更显著了。
当然这种情况在:(1)机器特别多 或/和(2)任务特别多 时可以忽略。但大部分人并不会有这样的情况,对耗时较长的任务,同一时刻每台机器不会有很多任务等着。

P.S.只考虑并行效率就觉得32*1核这样的布局最好其实比较幼稚,很多情况即使在理想条件下测试,32*1核也还不如16*2核好。最多同时跑8个任务还凑合。

另外只用很有限的功能、比如只跑高斯、只本地控制、只手动排队等等的时候,Windows是不错的。但任务越来越复杂,涉及的软件种类变多,对计算自动化、管理自动化的要求越来越高的时候还是会体现出计算任务对 Linux 是更友好的。很多功能在Windows上确实都可以实现,但对初学者来说常不“自然”,需要折腾且常不甚可靠。对不太熟练“不会折腾”的人常常反而Linux更省时间。

作者
Author:
tjchkj    时间: 2017-12-6 21:56
本帖最后由 tjchkj 于 2017-12-6 21:57 编辑

忘了说一句,我已经把scrarch这个的缓存去掉了,不再用supercache去缓存它了,直接把它放进内存去了,这样整个gaussian计算,除了读下输入文件和写进输出的结果文件.out ,基本就不再去读写硬盘了。这个办法比用固态盘解决大量读写的快的多的多了。那些需要在运算中大量读写硬盘的就知道这个好处了。
作者
Author:
liyuanhe211    时间: 2017-12-7 07:42
本帖最后由 liyuanhe211 于 2017-12-7 07:44 编辑
tjchkj 发表于 2017-12-6 21:56
忘了说一句,我已经把scrarch这个的缓存去掉了,不再用supercache去缓存它了,直接把它放进内存去了,这样 ...

一共才64G内存就要把内存当硬盘用了 (; ̄ェ ̄) 64G考虑“正常的问题”内存自己都能满了,别说还要塞scratch,你还要同时开32个任务。。。每个任务内存+scratch不超过2G......。640G内存还差不多

作者
Author:
tjchkj    时间: 2017-12-7 10:18
liyuanhe211 发表于 2017-12-7 07:42
一共才64G内存就要把内存当硬盘用了 (; ̄ェ ̄) 64G考虑“正常的问题”内存自己都能满了,别说还要塞sc ...

"每个任务内存+scratch不超过2G......。640G内存还差不多"  首先我这个任务不占内存,可能是差别吧。可以观察到,一个G16W 本身占用10MB内存,一个迭代计算模块占用80MB,l302占112MB,一个l702占91MB。这里真正表述严格的话图里的是KB的数还要除以1204才是MB,我就按不除的这样大约说。即便是有的任务占用一些内存,也不是说你定义了多少%mem它就用满,%mem只是说可以占用的上限。所以正真占用还是要在运行中去看。内存是共享的,并不是每个任务都同时占用那么多。     所以这个图里只用了物理内存64G的27%。而这27%里,scratch内存我分了2G,supercache给系统分了11G。所以,除去这13G,16开gaussian和win7系统一才共用4.4G,也就是说,16个gaussian 只用了不到2G。就算32开也大不到哪里去。可能如果有的任务会用到很大的内存的话,那样就不会去多开到32了,这个应该根据任务使用内存的大小而掌握的,这种情况下你就是不把scratch放内存里,想要还多开32个,那可能吗?所以和把scratch放不放内存关系不大。再说这个scratch就是放内存里,也不是说按照每个任务去各自分配一个啊。所以不是“每个任务内存+scratch不超过2G......。” 你这样等于是32开,要开32个scratch了。





作者
Author:
zhaoyangwx    时间: 2020-4-16 21:05
本帖最后由 zhaoyangwx 于 2020-4-16 21:08 编辑

没有windows版的话也可以通过WSL在windows下直接运行Linux版的g16,效率感觉还挺高 (, 下载次数 Times of downloads: 77)

作者
Author:
tjchkj    时间: 2020-9-29 23:09
liyuanhe211 发表于 2017-12-7 07:42
一共才64G内存就要把内存当硬盘用了 (; ̄ェ ̄) 64G考虑“正常的问题”内存自己都能满了,别说还要塞sc ...

小任务可以这样,需要大量硬盘的就不能这样了,最近做了一个MP2 好么,占用了400多G的临时文件。
作者
Author:
Peter_zhong    时间: 2020-9-30 09:23
sobereva 发表于 2017-12-4 16:33
linux没%CPU最多设32核这个问题,如这个帖子的情况,%CPU指定用36核心没问题
正确看待超线程(HT)技术对计 ...


作者
Author:
qinzhong605    时间: 2020-9-30 13:35
Peter_zhong 发表于 2020-9-30 09:23
**** 本内容被作者隐藏 ****

是。很明显的EM64W了呀,如果是linux不会有w字样的,一般是ES64L-G16Rev。
作者
Author:
Peter_zhong    时间: 2020-9-30 15:45
qinzhong605 发表于 2020-9-30 13:35
是。很明显的EM64W了呀,如果是linux不会有w字样的,一般是ES64L-G16Rev。

那这么说 win64算的速度应该和Linux版差不多吧? 我见本帖子说win64没有资源限制 可以全开
作者
Author:
qinzhong605    时间: 2020-9-30 16:37
Peter_zhong 发表于 2020-9-30 15:45
那这么说 win64算的速度应该和Linux版差不多吧? 我见本帖子说win64没有资源限制 可以全开

win版本只是小任务可以,真正干活还是用linux版本的来。
作者
Author:
sobereva    时间: 2020-9-30 19:18
Peter_zhong 发表于 2020-9-30 15:45
那这么说 win64算的速度应该和Linux版差不多吧? 我见本帖子说win64没有资源限制 可以全开

核数多的时候Win64版慢得要死,没实用性。
作者
Author:
namd学者    时间: 2021-4-14 15:19
zhaoyangwx 发表于 2020-4-16 21:05
没有windows版的话也可以通过WSL在windows下直接运行Linux版的g16,效率感觉还挺高

请问下这个WSL是啥呢,我也是没有WIN版
作者
Author:
zhaoyangwx    时间: 2021-5-29 15:36
namd学者 发表于 2021-4-14 15:19
请问下这个WSL是啥呢,我也是没有WIN版

https://docs.microsoft.com/zh-cn/windows/wsl/

如果是用g16建议用wsl1,效率要高一点
作者
Author:
Fluorescence    时间: 2021-8-16 01:26
Gaussian16在AMD的CPU上能不能正常运行。据说intel与AMD在CPU的指令集上不同,不能运行Gaussian。现在AMD的CUP最多可以有64核心,如果能运行的话,是不是比在intel的CPU上要好很多,毕竟AMD的核心数目庞大。
作者
Author:
paramecium86    时间: 2021-8-16 02:24
Fluorescence 发表于 2021-8-16 01:26
Gaussian16在AMD的CPU上能不能正常运行。据说intel与AMD在CPU的指令集上不同,不能运行Gaussian。现在AMD的 ...

Linux下
G16 A03 和 B01 对于ZEN2和 Zen3  cpu 会有些问题。
通过加入环境变量 export PGI_FASTMATH_CPU=sandybridge 就可以解决。 我自己用的5900x,加上这个环境变量就没啥问题。
而G16 C01 并没有这个问题。不需要特别设置环境变量就可以直接用

win版的G16W A03 不需要什么特别设置。直接安装后就可以用。
作者
Author:
Fluorescence    时间: 2021-9-1 00:08
现在只有G16 Win版B01。这个能不能用AMD的threadripper。比如3970X。
作者
Author:
paramecium86    时间: 2021-9-1 05:21
Fluorescence 发表于 2021-9-1 00:08
现在只有G16 Win版B01。这个能不能用AMD的threadripper。比如3970X。

64bit的 G16W A03 和 G16W C01 都可以正常在Zen3 5900X的机子上运行。 看起来B01 不应该有什么区别才对。
作者
Author:
biogon    时间: 2021-9-1 08:27
Fluorescence 发表于 2021-9-1 00:08
现在只有G16 Win版B01。这个能不能用AMD的threadripper。比如3970X。

能,但是你如果一定要在win上用那当然是用wsl运行linux的g16最好
作者
Author:
wzkchem5    时间: 2022-1-3 17:32
Karls 发表于 2022-1-3 09:05
能分享一下Win64 的Gaussian 软件吗?

与其违法用盗版软件,为什么不用免费的正版ORCA?你要用的功能ORCA不支持吗?
作者
Author:
mfdsrax2    时间: 2022-1-3 19:08
wzkchem5 发表于 2022-1-3 17:32
与其违法用盗版软件,为什么不用免费的正版ORCA?你要用的功能ORCA不支持吗?

主要是没有ORCAView
作者
Author:
wzkchem5    时间: 2022-1-3 19:53
mfdsrax2 发表于 2022-1-3 12:08
主要是没有ORCAView

有Avogadro啊,只不过名字里没有ORCA,而且不是ORCA专用的可视化软件而已
作者
Author:
mfdsrax2    时间: 2022-1-4 09:25
wzkchem5 发表于 2022-1-3 19:53
有Avogadro啊,只不过名字里没有ORCA,而且不是ORCA专用的可视化软件而已

这么厉害,可以直接打开INP和OUT文件吗?
作者
Author:
sobereva    时间: 2022-1-4 09:49
mfdsrax2 发表于 2022-1-3 19:08
主要是没有ORCAView

如果有gview,看ORCA的优化曲线、振动分析结果等,用:
OfakeG:使GaussView能够可视化ORCA输出文件的工具
http://sobereva.com/498http://bbs.keinsci.com/thread-13952-1-1.html

看轨道可以用Multiwfn载入ORCA的molden文件
使用Multiwfn观看分子轨道
http://sobereva.com/269http://bbs.keinsci.com/thread-462-1-1.html

Multiwfn也可以直接打开ORCA的输入和输出文件进主功能0看结构,也可以直接产生ORCA输入文件
详谈Multiwfn产生ORCA量子化学程序的输入文件的功能
http://sobereva.com/490http://bbs.keinsci.com/thread-13560-1-1.html

作者
Author:
wzkchem5    时间: 2022-1-4 16:27
本帖最后由 wzkchem5 于 2022-1-4 09:28 编辑
mfdsrax2 发表于 2022-1-4 02:25
这么厉害,可以直接打开INP和OUT文件吗?

可以,诸如画轨道图之类的都可以做。在orca论坛的下载区可以下载到
作者
Author:
bluewhale    时间: 2022-1-5 09:28
有人试过这东西(Microsoft HPC Pack 2019)吗?
https://docs.microsoft.com/en-us ... rview?view=hpc19-ps

作者
Author:
lanthanum    时间: 2022-7-19 19:49
请问楼主,
(1)用RAMdisk 用内存虚拟成一个盘符,这个是一个软件,还是启动时的一条命令?
(2)我用2696v3双路,win10 pro或workstation版,g16w_64位版,无论%nprocs=多少,都只有一个cpu在工作,另一个cpu闲着,就是说cpu占用率最多到50%,这个您怎么解决的?我看您图里cpu占用率是80-90%吧。
作者
Author:
guoruo    时间: 2022-7-21 14:22
lanthanum 发表于 2022-7-19 19:49
请问楼主,
(1)用RAMdisk 用内存虚拟成一个盘符,这个是一个软件,还是启动时的一条命令?
(2)我用26 ...

http://memory.dataram.com/products-and-services/software/ramdisk
这是一个小工具哈,128G内存以上的话可以用这个,速度挺快的。
作者
Author:
lanthanum    时间: 2022-7-27 23:25
guoruo 发表于 2022-7-21 14:22
http://memory.dataram.com/products-and-services/software/ramdisk
这是一个小工具哈,128G内存以上的 ...

谢谢,那第2个问题,您能看一下吗?
作者
Author:
guoruo    时间: 2022-8-4 15:43
lanthanum 发表于 2022-7-27 23:25
谢谢,那第2个问题,您能看一下吗?

我是至强双路72核192G,新机器最开始3个月没问题,双路能跑满。 但是3个月后有一天脑抽做CPU和内存压力测试,跑到机器蓝屏,重启后就也只能用到50%了。两路CPU都是好的,内存换了也都没问题,但是跑任务的时候只有一路cpu 工作,跑动力学 量化这样不同的工作,也是只有一路工作。有时是这路,有时是那路,我也不清楚是为啥,不过任务能跑,就懒得折腾了。
作者
Author:
aran217    时间: 2023-4-22 18:14
老师我和你一样linux门外汉,也找不到在windows平台下的任何前人的经验可以借鉴。想请教老师为什么你可以做到用%nproc指定44核全部调用呢?我是双E3 2673V4共40核,用%nproc无论怎么输核数运行G16以后都只有20个核在跑(另一个CPU在睡觉),尝试%cpu命令直接报错。跪求指教呜呜呜。
作者
Author:
paramecium86    时间: 2023-4-23 00:09
aran217 发表于 2023-4-22 18:14
老师我和你一样linux门外汉,也找不到在windows平台下的任何前人的经验可以借鉴。想请教老师为什么你可以做 ...

这个cpu的双路是40核心80线程。当总线程数超过64的时候 win10就会出问题。无法调用第二个cpu。 但是关掉超线程 就只剩下40核心40线程 这时候大概率就可以正常调用了。
作者
Author:
lanthanum    时间: 2023-4-23 03:45
aran217 发表于 2023-4-22 18:14
老师我和你一样linux门外汉,也找不到在windows平台下的任何前人的经验可以借鉴。想请教老师为什么你可以做 ...

http://bbs.keinsci.com/forum.php ... 49&fromuid=8664
作者
Author:
aran217    时间: 2023-4-23 15:12
lanthanum 发表于 2023-4-23 03:45
http://bbs.keinsci.com/forum.php?mod=redirect&goto=findpost&ptid=35462&pid=240349&fromuid=8664

老师,我改用Winserver2022依旧是同一时刻只能被调用20个核,但是与发帖之前用2019运行有一点区别,2019的时候是另一个CPU直接20个核全部在睡觉,用2022的时候运行一个计算任务是过几秒钟第一个CPU跑满,一会第二个CPU跑满,但不能同时跑满。关闭超线程后好像解决了,还在测试中。
作者
Author:
aran217    时间: 2023-4-23 15:12
paramecium86 发表于 2023-4-23 00:09
这个cpu的双路是40核心80线程。当总线程数超过64的时候 win10就会出问题。无法调用第二个cpu。 但是关掉 ...

谢谢老师,超线程已关闭,现在还在用计算例题测试中。
作者
Author:
lanthanum    时间: 2023-5-6 19:20
aran217 发表于 2023-4-23 15:12
老师,我改用Winserver2022依旧是同一时刻只能被调用20个核,但是与发帖之前用2019运行有一点区别,2019 ...

win11经过测试可以。
作者
Author:
dio.    时间: 2023-10-26 11:17
大大们,想要g16win的安装包

作者
Author:
liu1216081301    时间: 2024-10-31 11:05
64位 价格怎么样




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3