计算化学公社

标题: Gaussian09 D版本的编译 [打印本页]

作者
Author:
ORCA_in_TCC    时间: 2015-1-28 15:19
标题: Gaussian09 D版本的编译
第一次编译高斯源代码,那是无比的兴奋,零基础摸索到凌晨4点才搞定(我一博后师兄玩到3点),过程艰辛,但是结果其实很简单。
如果用官方推荐的商业的波兰Fortran编译器pgf77,一切都是很简单的事情了,但是我们用的是免费版intel编译器,所以有些地方得改改:

# 将所有的删除命令全部注释掉
vi  bldg09
#  rm -f -r *.exe *.o *.a
#  rm -r -f temputil
#  rm mdutil.o
#  rm ${x}*.o
#  rm -f -r temputil

# 修改一下mkl数据库的路径
vi setup-make
else if ("$mach" =="ia64") then
  setfcname = "FCN=ifort"
  setblas = "BLAS='' UTIL_NAME='util.a'"
  setblasp = "$blas"
  setpstr = "-p"
  setfcflag = "FC='-L/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64-WB -i8 -r8 -w -ftz -switch fe_new_cgoto -fp-relaxed -fp-speculation=safe-static-intel -openmp -fpp2 -auto -O3 -fpemu=silent'"
  setfcflagp = "FC='-L/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64-WB -i8 -r8 -w -ftz -switch fe_new_cgoto -fp-relaxed -fp-speculation=safe-static-intel -openmp -fpp2 -auto -O3 -fpemu=silent -p'"
  setfc2flag = "FC2='/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_ipf.a'"
setenv LINDA_FORTRAN 'ifort-L/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib -WB -i8 -r8 -w -ftz -switchfe_new_cgoto -fp-relaxed -fp-speculation=safe -static-intel -openmp -fpp2 -auto-O3 -fpemu=silent'
setenv LINDA_FORTRAN_LINK 'ifort -L/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib-WB -i8 -r8 -w -ftz -switch fe_new_cgoto -fp-relaxed -fp-speculation=safe-static-intel -openmp -fpp2 -auto -O3 -fpemu=silent'
setenv POSTFL_FORTRAN 'ifort -L/usr/intel/composer_xe_2013_sp1.2.144/mkl/lib-WB -i8 -r8 -w -ftz -switch fe_new_cgoto -fp-relaxed -fp-speculation=safe-static-intel -openmp -fpp2 -auto -O3 -fpemu=silent'
vi set-mflags
   else if ("$hname" == "amd64") then
     if (-e $xname/istanbul.flag) then
       set mty = ""
       set blstr = "k10h64sse3"
       set specflag = "-Mx,39,0x10000000"
       set mflags = "$mflags X86TYPE='-DX86_TYPE=S'"
     else
       set mty = "k8-64"
       set blstr = ""
       setspecflag = ""
       endif
     set blasname = "amd64$blstr"
     set mflags = "$mflags OPTOI= MMODEL='-mcmodel=medium'SPECFLAG=$specflag

vi ia64.make
INTELDIR =/usr/intel/composer_xe_2013_sp1.2.144
MKLLIB =$(INTELDIR)/mkl/lib/intel64
# COMPDIR =$(INTELDIR)/lib/ia64   
# I8 machine
I8FLAG = -i8 -r8
I8CPP = -D_IA64_ -DP64 -DPACK64 -DUSE_I2-DI64 -DLITTLE_END -DNO_SBRK \
-DGCONJG=DCONJG -DGCMPLX=DCmplx -DGREAL=DREAL -DGIMAG=DIMAG \
-DUSE_LL -DMERGE_LOOPS -D_ALIGN_CORE_ -DDO_BKSPEF
GAUDIM = 2500
GAUDIMA = $(GAUDIM)00
GAUDIMR = $(GAUDIM)0
GAUDIMS = $(GAUDIM)
NISEC = -DDEFISEC=32
NJSEC = -DDEFJSEC=128
NKSEC = -DDEFKSEC=512
DIMENSX = $(INCDIR) -DDEFMAXRES=$(GAUDIMR)-DDEFMAXSEC=$(GAUDIMS) $(INCDIRG) $(PARFLAG) $(DEBUGP) -DDEFMAXSHL=$(GAUDIMA)-DDEFMAXATM=$(GAUDIMA) \
-DDEFMAXNZ=$(GAUDIMA) -DDEFNVDIM=257 -DDEFMAXSUB=80 -DDEFNBOMAXBAS=10000\
-DDEFARCREC=1024 -DDEFMAXXCVAR=40 -DDEFMAXIOP=200 -DDEFMAXCOORDINFO=32-DDEFMAXCHR=1024 -DDEFMOMEGA=5 -DDEFNOMEGA=6 -DDEFMAXXCNAME=25 -DDEFLMAX=13-DDEFMINB1P=100000000 \
-DDEFXGN3MIN=64 $(NISEC) $(NJSEC) $(NKSEC) -DDEFN3MIN=10 \
-DDEFMAXHEV=2000 -DDEFCACHE=128$(DEFCACHE) \
-DDEFMAXLECP=10 -DDEFMAXFUNIT=5 -DDEFMAXFFILE=10000 -DDEFMAXFPS=1300-DDEFMAXINFO=200 -DR16_OK \
-DDEFMAXOP=384 -DDEFMAXTIT=100 -DDEFMAXRTE=4000 -DDEFMAXREDTYPE=3-DDEFMAXREDINDEX=4 -DDEFMAXOV=500 -DDEFMXDNXC=8 -DDEFMXTYXC=10 $(CTDEBUG) \
$(BLASFLAG) $(PCMDIM) $(I8CPP) -DEXT_LSEEK
RUNCC = gcc
FFLAG0 = -mkl -openmp-no-prec-div -auto -axAVX -fpp3 -pad -WB $(I8FLAG) -w -ftz -fp-relaxed-static-intel -static-libgcc -fp_speculation=safe $(TESTFLAGS) $(PARSWITCH)$(DEBUGF) $(PROFFLAG) $(FPE)
LIBS =-lmkl_intel_thread -lmkl_core -lmkl_intel_ilp64 -liomp5 -lpthread -lm

vi  bldg09
else if ("$x" =="amd64") then
  @i386 = 1
  (cdbsd ; ln -s ia64.make g09.make)   

# 修改好后,最后开始编译,一切顺利的话估计得一个小时。
export g09root=/home/dongbo/g09d_rev
cd $g09root/g09
bsd/install
bsd/bldg09 all ia64 >& compile.log&

# 喜欢刷屏的可以敲一下下面这一行^_^
tail -f compile.log


作者
Author:
beefly    时间: 2015-1-28 21:10
Gaussian官方设定的编译器是PGI用于ia32/amd64/em64t,Intel用于ia64。虽然可以通过修改make.g09使Intel用于前者,但是有些计算类型的结果是错的。已知的一个是半经验,能量相差十万八千里,还有一个我忘了。编译以后,最好做一个半经验计算的测试,并和标准结果比较。

g03到g09的各种版本都有这个问题。当然,也可能是我自己改的make.g09参数有问题。
作者
Author:
ORCA_in_TCC    时间: 2015-1-28 22:40
用intel编译器编译确实会产生一些意想不到的结果,最后只能用sob老师提供的pgf77搞定的,并且编译简单而且是可以跨平台用的。
作者
Author:
sobereva    时间: 2015-1-28 23:39
G09比较好编译,当年编译G03真是费了老劲了。
一定要用PGF。ifort编译高斯需要折腾。

这里顺便把D.01之前的版本编译过程也贴上
Gaussian09 A02、C01 64bit编译方法
http://sobereva.com/81

Fedora7-64bit下编译Gaussian03-C02
http://sobereva.com/2
作者
Author:
lao7    时间: 2015-1-29 09:49
国内买不到代码版本的吧  楼主应该贴出来分享一下
作者
Author:
ORCA_in_TCC    时间: 2015-1-29 12:40
天朝有两个组有源代码,但是需要使用原代码的人都是需要签协议的。
作者
Author:
lao7    时间: 2015-1-29 20:22
你放出来 gaussian也不知道谁放的吧?能以个人的名义买代码版本的Gaussian吗?
作者
Author:
beefly    时间: 2015-1-31 02:55
lao7 发表于 2015-1-29 20:22
你放出来 gaussian也不知道谁放的吧?能以个人的名义买代码版本的Gaussian吗?

如果Gaussian在打包的时候加入了水印,可以查出来。

以前国外某服务器的Gaussian09.D的源代码忘了去掉全局访问权限,匿名用户都可以下载,不过很快就修改了。目前只有Gaussian09.C的源代码还可以下载。
作者
Author:
北纬18°    时间: 2015-2-1 10:36
哪有Gaussian09.C的源代码?
作者
Author:
ORCA_in_TCC    时间: 2015-2-1 13:39
Gaussian09的源代码远比一般的量化程序写得艰涩难懂,尽管它的输出还是不错的。
作者
Author:
lao7    时间: 2015-2-2 16:43
ORCA_in_TCC 发表于 2015-2-1 13:39
Gaussian09的源代码远比一般的量化程序写得艰涩难懂,尽管它的输出还是不错的。

个人买一套不知道要多少钱?64为linu的
作者
Author:
ORCA_in_TCC    时间: 2015-2-2 16:50
从美国直接买binary版本貌似是20K,但是从国内买的话据说是40K。
作者
Author:
smutao    时间: 2015-3-6 15:09
ORCA_in_TCC 发表于 2015-2-2 16:50
从美国直接买binary版本貌似是20K,但是从国内买的话据说是40K。

國內不賣源代碼

作者
Author:
ZHANGZY    时间: 2015-3-7 06:17
没听说过国内买源代码?弱弱问一句:为什么非要源代码?编译链接后速度会更快吗? 对于大多数个人来说,意义不大
作者
Author:
ORCA_in_TCC    时间: 2015-3-7 14:35
买源代码当然是为了用源代码
作者
Author:
ORCA_in_TCC    时间: 2015-3-7 14:35
smutao 发表于 2015-3-6 15:09
國內不賣源代碼

天朝目前为止有两个组有源代码。
作者
Author:
smutao    时间: 2015-3-8 12:33
ORCA_in_TCC 发表于 2015-3-7 14:35
天朝目前为止有两个组有源代码。

我在美國 有源代碼
但不傳播
作者
Author:
ORCA_in_TCC    时间: 2015-3-8 17:53
我在天朝,同样不传播,你懂得!
作者
Author:
smutao    时间: 2015-11-10 00:56
RUNCC = gcc

这个地方感觉不太对啊 怎么用到的是gnu的编译器?
作者
Author:
ruixif    时间: 2016-1-6 01:41
你这样改IA-64对应的makefile是不行的,处理器架构就不一样。最后编译出来算不对也是正常的。你要是真想用INTEL编译器编译,要去改i386.make.因为Gaussian公司自己懒,不肯再写一个x86_64的makefile,于是就把i386拿来加了点x86_64的feature直接用了。效率估计也就呵呵了。
作者
Author:
smutao    时间: 2016-1-6 06:08
ruixif 发表于 2016-1-6 01:41
你这样改IA-64对应的makefile是不行的,处理器架构就不一样。最后编译出来算不对也是正常的。你要是真想用I ...

http://bbs.keinsci.com/forum.php?mod=viewthread&tid=2082
作者
Author:
五十八    时间: 2016-8-19 09:44
上半年编译了g09 E01 发现直接能用intel 不用改哈哈哈 下面这个文件就写着哈哈哈

作者
Author:
abdoman    时间: 2016-8-21 16:28
希望把例子的测算的结果汇报一下。
intel 编译比较恼火。稀奇古怪的问题

作者
Author:
五十八    时间: 2016-8-22 10:07
本帖最后由 五十八 于 2016-8-22 10:10 编辑
abdoman 发表于 2016-8-21 16:28
希望把例子的测算的结果汇报一下。
intel 编译比较恼火。稀奇古怪的问题

刚刚 通过了进行了tests内测试,除缺少文件外其他均通过,但是使用改版的i386.make和ia64.make效率不同 后者要高很多,和pgi没差别这个是ia64的
About to execute g09   <com/test0000.com >&amd64/test0000.log
0.001u 0.009s 0:00.15 0.0%        0+0k 0+0io 0pf+0w
About to execute g09   <com/test0001.com >&amd64/test0001.log
0.001u 0.009s 0:00.02 0.0%        0+0k 0+0io 0pf+0w
About to execute g09   <com/test0002.com >&amd64/test0002.log
0.002u 0.008s 0:00.02 0.0%        0+0k 0+0io 0pf+0w
i386的比这个慢一些
我使用者 make -j4 来make的

作者
Author:
landao    时间: 2017-10-12 14:30
beefly 发表于 2015-1-31 02:55
如果Gaussian在打包的时候加入了水印,可以查出来。

以前国外某服务器的Gaussian09.D的源代码忘了去掉 ...

哪里可以下载Gaussian09 C的源代码?
作者
Author:
Warm_Cloud    时间: 2018-7-27 17:20
ORCA_in_TCC 发表于 2015-2-1 13:39
Gaussian09的源代码远比一般的量化程序写得艰涩难懂,尽管它的输出还是不错的。

应该是把注释去掉了。
作者
Author:
Daniel_Arndt    时间: 2018-7-29 16:33
本科有门课的老师看过源代码。他当着本科生的面吐槽过其中算双电子积分的代码写得不好。

这个老师曾经在为学校购买g09时把当时国内的代理商干的欺上瞒下的事情捅出来,代价仅仅是去上海花了两千元诉讼费。他在那个代理商失去代理资格后向高斯公司购买g09,高斯公司在美国的价格的基础之上还给他打了个折扣,净结果是为学校省了很多钱,他对此事颇为得意
作者
Author:
sobereva    时间: 2018-7-30 01:58
Daniel_Arndt 发表于 2018-7-29 16:33
本科有门课的老师看过源代码。他当着本科生的面吐槽过其中算双电子积分的代码写得不好。

这个老师曾经在 ...

应该说G的双电子积分写得太好了,效率是所有程序里最顶尖的,自己写过程序与G对比过效率的人的感受才最深
作者
Author:
Warm_Cloud    时间: 2018-7-30 08:53
Daniel_Arndt 发表于 2018-7-29 16:33
本科有门课的老师看过源代码。他当着本科生的面吐槽过其中算双电子积分的代码写得不好。

这个老师曾经在 ...

它那个电子积分,不懂的才会吐槽,看懂了会发现,它几乎把计算机资源给榨干了,而且,算法也是几乎到了极致,没什么油水可捞了。超过它太难了。




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