计算化学公社

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

[其它量化程序] gcc-4.9.1+boost-1.5.5+openmpi-1.8.4+DMRG

[复制链接 Copy URL]

52

帖子

0

威望

1656

eV
积分
1708

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 ORCA_in_TCC 于 2015-1-28 15:14 编辑

DMRG(density matrix renormalization group,密度矩阵重整化群)是号称下一代的FCI,因此在闲暇时想编译过来再玩玩。使用的source code 是量化界神童普林斯顿大学Chan组开发和维护的Block代码,下载网址:
旧版更稳定易安装,但是新版更快。下面介绍的是新版的并行编译。由于新版里面加了很多C++新的内容,因此Linux自带的编译器得换成推荐的gcc4.9及以上版本。

第一步,编译gcc依赖的数据库,需要root权限:
# installlibraries as root
# 下面的gmp-5.0.5,mpfr-2.4.2,mpc-0.8.1,ppl-0.12-1,isl-0.14,cloog-0.18.1都是已经解压好的

a=/localhome/dongbo/apps/commom
cd/localhome/dongbo/apps/gmp-5.0.5
./configure --prefix=$a--enable-cxx --enable-assert CPPFLAGS=-fexceptions
make &&make check && make install
cd/localhome/dongbo/apps/mpfr-2.4.2
./configure--prefix=$a --with-gmp=$a --enable-assert
make &&make check && make install
cd /localhome/dongbo/apps/mpc-0.8.1
./configure--prefix=$a --with-gmp=$a --with-mpfr=$a
make &&make check && make install
cd /localhome/dongbo/apps/ppl-0.12-1
./configure--prefix=$a --with-gmp=$a --enable-assertions
make &&make check && make install
cd/localhome/dongbo/apps/isl-0.14
./configure--prefix=$a --with-gmp=$a --enable-assertions
make &&make check && make install
cd/localhome/dongbo/apps/cloog-0.18.1
./configure--prefix=$a --with-gmp-prefix=$a --with-gmp=system --with-bits=gmp--with-isl=$a
make &&make check && make install

# 到这里为止,全部依赖的数据库就安装好了,下面安装gcc
# 在命令行里面输入下面两行,然后开始安装gcc

exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH: $a/lib
export PATH=$a /bin:$PATH

cd/localhome/dongbo/apps/gcc-4.9.1
mkdir objdir
cd objdir
../gcc-4.9.1/configure--prefix=$a --with-gmp=$a --with-mpc=$a --with-mpfr=$a --with-ppl=$a--with-cloog=$a --enable-bootstrap --enable-build-with-cxx--enable-cloog-backend=isl --disable-libjava-multilib --enable-checking=release--disable-multilib
make all install>& make.log &

# 上面编译的全部内容是写在一行里面的;编译gcc比较耗时,估计至少得一小时

# 上面安装的时使用的是root权限,然后赋予自己使用权限

chown dongbo *
# 切换到用户
su - dongbo

# 安装并行软件openmpi-1.8.4
# installopenmpi-1.8.4 as dongbo

cd /localhome/dongbo/apps
tar zxvf openmpi-1.8.4.tar.gz
mv openmpi-1.8.4 openmpi-1.8.4_src
mkdir openmpi-1.8.4
cd openmpi-1.8.4_src

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: $a/lib
export PATH=$a /bin:$PATH

./configure--prefix=/localhome/dongbo/apps/openmpi-1.8.4 FC=gfortran CC=gcc F77=gfortran CXX=g++
make && makecheck && make install

# 安装基于openmpi-1.8.4并行软件的C++数据库boost-1.5.5
# install boost-1.5.5as dongbo

cd /localhome/dongbo/apps
tar zxvf boost_1_55_0.tar.gz
mkdir boost-1.5.5
cd boost_1_55_0
./bootstrap.sh--prefix=/localhome/dongbo/apps/boost-1.5.5
cd/localhome/dongbo/apps/boost_1_55_0/tools/build/v2

# add a line into thefile below
vi user-config.jam
# 下面这一行是比较关键的一行
using mpi :/localhome/dongbo/apps/openmpi-1.8.4/bin/mpic++ ;
cd/localhome/dongbo/apps/boost_1_55_0
./b2 install | teemake.log

# boost-1.5.5的安装也比较耗时,估计也得一小时
# 所有软件的安装使用的是相同的编译器,这一点非常重要

# 最后是安装Block
# 编译的时候使用intel的MKL数据库,但是不适用里面的编译器
# install Block asdongbo

cd /localhome/dongbo/Block-master

vi makefile
BOOSTINCLUDE =/localhome/dongbo/apps/boost-1.5.5/include
#specify boost andlapack-blas library locations
BOOSTLIB =-L/localhome/dongbo/apps/boost-1.5.5/lib \
-lboost_serialization-lboost_system -lboost_filesystem
LAPACKBLAS = -lblas-llapack
USE_BOOST56 = no
ifeq ($(USE_BOOST56),yes)
       B56 = -DBOOST_1_56_0
endif
#use these variable toset if we will use mpi or not
USE_MPI = yes
MPI_LIB =/localhome/dongbo/apps/boost-1.5.5/lib
USE_MKL = yes
# use this variable toset if we will use integer size of 8 or not.
# molpro compilationrequires I8, since their integers are long
I8_OPT = yes
MOLPRO = no
OPENMP = no
# add Molcas interfaceto libqcdmrg.so
# molcas compilationw/ -64 option requires I8 as well
MOLCAS = yes
ifeq ($(USE_MKL), yes)
MKLLIB =/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64
LAPACKBLAS =-L${MKLLIB} -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
MKLFLAGS =/opt/intel/composer_xe_2013_sp1.2.144/mkl/include
MKLOPT =-D_HAS_INTEL_MKL
else
MKLFLAGS = .
endif
RUN_UNITTEST=no
ifeq ($(RUN_UNITTEST),yes)
UNITTEST = -DUNITTEST
endif
AR=ar
ARFLAGS=-qs
RANLIB=ranlib
ifeq ($(I8_OPT), yes)
       I8 = -D_FORTINT_64
endif
EXECUTABLE =block.spin_adapted
# change to icpc forIntel
CXX =  g++
MPICXX =/localhome/dongbo/apps/openmpi-1.8.4/bin/mpic++

make >& make.log
# 这样整个编译过程计算完成了

# 将环境变量添加到隐藏文件~/.bashrc文件中
# add environmentvariables into bashrc
# gcc openmpi-1.8.4boost-1.5.5

vi ~/.bashrc
exportPATH=/localhome/dongbo/apps/common/bin:$PATH
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/\
localhome/dongbo/apps/common/lib64:\
/localhome/dongbo/apps/common/lib:\
/localhome/dongbo/apps/openmpi-1.8.4/lib:\
/localhome/dongbo/apps/boost-1.5.5/lib

# 下面是Block的一个测试例子
# 前提是先用molpro将单双电子积分FCIDUMP文件产生
#=input file a test=#
sym c1
orbitals FCIDUMP

nelec 20
spin 0
irrep 1

warmup local_3site
twodot_noise 1e-5 0.3

hf_occ integral
schedule default
maxM 500
maxiter 30
#====================#

评分 Rate

参与人数
Participants 1
eV +10 收起 理由
Reason
sobereva + 10

查看全部评分 View all ratings

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

2#
发表于 Post on 2015-12-9 00:20:45 | 只看该作者 Only view this author
dongbo 我最近在弄orca里面的DMRG

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

3#
发表于 Post on 2015-12-9 03:20:47 | 只看该作者 Only view this author
添加一点 以当备忘
编译boost的时候加入prefix可以解决没有sudo权限的问题,安装到自己目录
./b2 install --prefix=PREFIX

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

4#
发表于 Post on 2015-12-9 05:15:36 | 只看该作者 Only view this author
编译完一次boost之后
还需要加 --with-mpi
来单独编译一次boost的mpi库

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

5#
发表于 Post on 2015-12-9 05:34:23 | 只看该作者 Only view this author

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

6#
发表于 Post on 2015-12-9 05:48:14 | 只看该作者 Only view this author
另外我发现你的帖子冗余内容太多
比如编译gcc、openmpi这些可以不写
但是boost那块写的很详细

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

7#
发表于 Post on 2015-12-10 04:47:24 | 只看该作者 Only view this author
搞了一天发现这玩意不能当成现成的量化程序用
只有关键的计算模块

52

帖子

0

威望

1656

eV
积分
1708

Level 5 (御坂)

8#
 楼主 Author| 发表于 Post on 2015-12-10 16:41:55 | 只看该作者 Only view this author
DMRG和CASSCF一样,不像DFT和HF,不是一个black box,必须有一定的理论基础和实践经验才能算出正确的东西,不然就是GIGO garbage in, garbage out

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

9#
发表于 Post on 2015-12-10 19:47:28 | 只看该作者 Only view this author
smutao 发表于 2015-12-10 04:47
搞了一天发现这玩意不能当成现成的量化程序用
只有关键的计算模块

必须写个接口去调用的节奏?
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

10#
发表于 Post on 2015-12-10 20:42:40 | 只看该作者 Only view this author
卡开发发 发表于 2015-12-10 19:47
必须写个接口去调用的节奏?

是的
或者用orca产生中间文件也可以
但是不如直接在orca、molpro以及qchem中直接用已经implemented的方便

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

11#
发表于 Post on 2015-12-21 05:32:25 | 只看该作者 Only view this author
卡开发发 发表于 2015-12-10 19:47
必须写个接口去调用的节奏?

我发现我之前的表述不准确
BLOCK DMRG可以作为独立的程序去用
但是需要molpro的辅助来产生fcidump文件

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

12#
发表于 Post on 2015-12-21 10:11:00 | 只看该作者 Only view this author
smutao 发表于 2015-12-21 05:32
我发现我之前的表述不准确
BLOCK DMRG可以作为独立的程序去用
但是需要molpro的辅助来产生fcidump文件

楼上已经做了说明,我知道啥意思了
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 18:37 , Processed in 2.338936 second(s), 23 queries , Gzip On.

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