计算化学公社
标题:
ubuntu 安装 Dalton
[打印本页]
作者Author:
wxyhgk
时间:
2024-10-11 17:32
标题:
ubuntu 安装 Dalton
本帖最后由 wxyhgk 于 2024-10-11 17:35 编辑
说明:
本文由 ChatGPT 和 Notion AI 辅助完成
系统:Ubuntu 22.04,20.04 均测试成功
dalton 版本:Dalton 2020
Dalton 是一个开源的量子化学计算软件套件,专门用于研究分子的电子结构。
Dalton 的优点在于它能够进行各种高级的电子结构计算(如耦合簇、MCSCF、密度泛函理论等),并且提供丰富的分子性质计算功能,如磁性质和光学性质。
同时,它支持线性缩放算法,适合大型分子体系计算,且具备开源性质,便于用户进行二次开发。
0. 准备工作
如果你是新手或者不想折腾可以这样做
# 如果不存在就建立 Download 文件夹
mkdir -p $HOME/Downloads
# 如果不存在就建立 Software/dalton2020 文件夹,这是 dalton 安装路径
mkdir -p $HOME/Software/dalton2020
# dalton 临时计算目录
mkdir -p $HOME/Software/dalton2020/scratch
复制代码
这样设置之后,下面的代码可以无脑复制粘贴了
0.1 ssh 终端工具
到 (
https://www.xterminal.cn/
) 下载这个好用的 ssh 工具,有 ai 提示,系统监控,虽然有些小 bug,我个人认为非常值得推荐
0.2 tmux 安装
为了我们后续的步骤不断连,以及避免各种关闭窗口的失误什么的,这里先安装 tmux
sudo apt update
sudo apt install tmux -y
复制代码
然后使用 tmux 命令建立一个后台窗口,防止断连
tmux new -s dalton
复制代码
后续如果遇到断连,误操作关闭窗口等各种不小心的问题,可以重新打开终端,然后运行
tmux attach -t dalton
复制代码
可以进入到之前的安装部分
0.3 cmake,git 安装
安装 cmake,git
sudo apt install cmake git -y
复制代码
检查 cmake
cmake --version
复制代码
(, 下载次数 Times of downloads: 32)
上传 Uploaded
点击下载Click to download
0.4 编译器的安装
sudo apt install libhwloc-dev libevent-dev -y
复制代码
sudo apt install libhdf5-dev libeigen3-dev libboost-dev -y
复制代码
sudo apt install libopenblas-dev gfortran gcc g++ -y
复制代码
然后检查是否安装正确
gfortran --version
gcc --version
g++ --version
mpif90 --version
mpicc --version
mpicxx --version
复制代码
(, 下载次数 Times of downloads: 33)
上传 Uploaded
点击下载Click to download
0.5 openmpi 安装
sudo apt install openmpi-bin openmpi-common libopenmpi-dev -y
复制代码
openmpi 安装检查
mpirun --version
复制代码
(, 下载次数 Times of downloads: 27)
上传 Uploaded
点击下载Click to download
0.6 python 设置
确认你是有有 Python2 的环境,如果没有就需要用符号链接
# python 2 环境检测
python -V
# python3 环境检测
python3 -V
复制代码
如图所示,我这里 Python3 是有的,Python 没有,即 Python 2 或指向 Python 3 的 python 符号链接不存在, 可以通过创建 Python 的符号链接来解决这个问题:
(, 下载次数 Times of downloads: 28)
上传 Uploaded
点击下载Click to download
这条命令会将 python 命令指向 python3,这样你就可以直接使用 python 作为命令了。
如果不做这一步检查,后面就会提示下面的
“ python: 没有那个文件或者目录”
(, 下载次数 Times of downloads: 30)
上传 Uploaded
点击下载Click to download
0.7 数学库安装
sudo apt-get install libblas-dev liblapack-dev -y
复制代码
检查数学库
dpkg -l | grep blas
dpkg -l | grep lapack
复制代码
(, 下载次数 Times of downloads: 33)
上传 Uploaded
点击下载Click to download
1. int32 安装(不推荐)
这部分先看看,熟悉下流程,不建议用这部分来安装,看完后,直接看 int64 部分的安装
1.1 拉取项目
cd $HOME/Downloads
git clone --recursive https://gitlab.com/dalton/dalton.git
复制代码
1.2 setup
标准并行编译(使用 MPI)
如果你的系统中已经安装了 MPI 编译器(如 mpif90、mpicc 和 mpicxx),可以直接使用以下命令配置:
./setup --fc=mpif90 --cc=mpicc --cxx=mpicxx或者直接使用 --mpi 选项,它是上述命令的快捷方式:
./setup --mpi
适用场景
:适用于常见的 MPI 并行环境(如 OpenMPI 或 MPICH)。
使用 Intel MPI 并行编译
如果你使用 Intel 编译器(如 mpiifort、mpiicc、mpiicpc),则可以使用以下命令:
./setup --fc=mpiifort --cc=mpiicc --cxx=mpiicpc
适用场景
:适用于安装了 Intel MPI 的环境,可以更好地优化 Intel 处理器上的性能。
使用 Intel 编译器的串行编译(链接并行 MKL 库)
如果你只需要串行编译(不使用 MPI),但是仍然希望链接到 Intel 的 MKL 库,可以使用以下命令:
./setup --fc=ifort --cc=icc --cxx=icpc --mkl=parallel
适用场景
:适用于需要串行计算但依赖 MKL 并行库进行矩阵运算加速的场景。
使用 GNU 编译器的串行编译(不建议)
如果你没有 Intel 编译器,而是使用 GNU 编译器,可以使用以下命令:
./setup --fc=gfortran --cc=gcc --cxx=g++
适用场景
:适用于标准的 GNU 编译器环境,一般情况下可用于测试和小规模计算。
Cray 系统的并行编译
在 Cray 系统上进行并行编译时,可以使用 Cray 的编译器(如 ftn、cc 和 CC),并启用 --cray 和 --mpi 选项:
./setup --fc=ftn --cc=cc --cxx=CC --cray --mpi
适用场景
:适用于 Cray 超算系统,使用 Cray 的编译器和并行库。
SGI 系统的并行编译
如果你在 SGI 系统上,并且使用 Intel 编译器和 MPT(Message Passing Toolkit),可以使用以下命令:
./setup --fc=ifort --cc=icc --cxx=icpc --sgi-mpt
适用场景
:SGI 系统环境(如 Altix 系列),支持高效的消息传递和并行计算。
我是用的第一种,标准并行编译(使用 MPI)
进入 dalton 文件夹
cd dalton
复制代码
然后 setup
./setup --prefix=$HOME/Software/dalton2020 --mpi --blas=auto --lapack=auto
复制代码
说明:
--prefix 是定义你的 dalton 后续的安装路径的
--mpi 表示采用 mpi 并行
--blas=auto --lapack=auto 表示用用这两个数学库,auto 表示自动寻找环境变量
这里如果出现错误,或者后期需要重新配置,可以这样
这个时候需要在 dalton 的下载目录,删除 CMakeCache.txt 文件
(, 下载次数 Times of downloads: 32)
上传 Uploaded
点击下载Click to download
rm ./build/CMakeCache.txt
复制代码
安全起见确认一下是否正确
./setup --show
复制代码
(, 下载次数 Times of downloads: 37)
上传 Uploaded
点击下载Click to download
1.3 编译安装
进入 build 目录
cd build
复制代码
编译
make -j
复制代码
安装
make install
复制代码
1.4 设置环境变量
环境变量
export PATH=$HOME/Software/dalton2020/dalton:$PATH
export DALTON_TMPDIR=$HOME/Software/dalton2020/scratch
export OMP_NUM_THREADS=96
复制代码
说明:
$HOME/Software/dalton2020/dalton 是你的 dalton 的路径
$HOME/Software/dalton2020/scratch 为临时目录
OMP_NUM_THREADS=96 这里的 96 替换成你的 CPU 的核心数
1.5 ctest 运行测试
进入 build 文件夹,使用 ctest 命令
cd build
ctest
复制代码
有 500 多个例子,经过一段时间的运行,全部完成了了,就这个 144 例子失败了,说明这个安装是成功的
(, 下载次数 Times of downloads: 29)
上传 Uploaded
点击下载Click to download
由于我目前对 dalton 这个软件不熟悉,
这个可能是版本的问题造成了一些什么问题,也可能是关键词不兼容?具体原因目前不清楚
1.6 int32 的缺点
使用 int32 版本编译的话,最大内存只能设置成 16 GB,
对于企业,或者稍微大一点的分子来说显然是不够用的,因此,使用下面的 int64 版本更好.
2. int64 安装(推荐)
首先拉取项目
cd $HOME/Downloads
git clone --recursive https://gitlab.com/dalton/dalton.git
复制代码
2.1 准备工作
到
dalton/DALTON/gen1int
里面去,修如下四个文件
gen1int_matrix.F90,gen1int_host.F90 gen1int_shell.F90,gen1int_api.F90
(, 下载次数 Times of downloads: 37)
上传 Uploaded
点击下载Click to download
使用 XTerminal 直接查找替换就行了,将这四个文件里面的所有的
#include "mpif.h"
(, 下载次数 Times of downloads: 33)
上传 Uploaded
点击下载Click to download
全部替换成
#include "mpi_mod.h"
#include "mpi_header.h"
复制代码
当然了你也可以用 shell 命令进行替换
# 进入目标目录
cd DALTON/gen1int
# 定义要修改的文件
files=("gen1int_matrix.F90" "gen1int_host.F90" "gen1int_shell.F90" "gen1int_api.F90")
# 遍历文件并进行替换
for file in "${files[@]}"
do
sed -i 's/#include "mpif.h"/#include "mpi_mod.h"\n#include "mpi_header.h"/g' "$file"
echo "已处理文件: $file"
done
echo "所有文件处理完成"
# 回到当前目录
cd -
复制代码
解释一下为什么需要这么做,因为mpif.h 只能处理 32 位数据,但是我们使用 --int64 告诉 Dalton 需要 64 位数据,所以出错。
我们的代码
#include "mpi_mod.h"
#include "mpi_header.h"
复制代码
其中 mpi_mod.h 是用于条件性地包含 use mpi 模块,而 mpi_header.h 则用于包含 mpif.h,以便在某些情况下仍然使用传统的 mpif.h 接口。
用 use mpi 可以自动处理 32 和 64 位数据,避免数据大小不匹配。
2.2 setup
进入 dalton 下载文件夹,然后建立一个安装目录
mkdir -p $HOME/Software/dalton2020_int64
复制代码
编译
./setup --prefix=$HOME/Software/dalton2020_int64 --int64 --mpi --blas=/usr/lib/x86_64-linux-gnu/libblas.so --lapack=/usr/lib/x86_64-linux-gnu/liblapack.so
复制代码
说明:
$HOME/Software/dalton2020_int64 这里的为你的安装路径
--blas=/usr/lib/x86_64-linux-gnu/libblas.so 不能变(除非你是通过编译安装的)
--lapack=/usr/lib/x86_64-linux-gnu/liblapack.so 不能变(除非你是通过编译安装的 )
2.3 编译安装
首先进入 build 文件夹,然后在 build 文件夹里面建立两个文件: mpi_header.h, mpi_mod.h
其中 mpi_header.h 填入如下的内容,然后保存
! mpi_header.h
#if defined(VAR_MPI) && !defined(USE_MPI_MOD_F90)
#include "mpif.h"
#endif
复制代码
mpi_mod.h 填入如下内容,然后保存
! mpi_mod.h
#if defined(VAR_MPI) && defined(USE_MPI_MOD_F90)
use mpi
#endif
复制代码
以下是一个简单的 Bash 脚本,可以帮助你创建并填充
mpi_header.h
和
mpi_mod.h
文件:
# 进入 build 文件夹
cd build
# 创建并填充 mpi_header.h 文件
cat << EOF > mpi_header.h
! mpi_header.h
#if defined(VAR_MPI) && !defined(USE_MPI_MOD_F90)
#include "mpif.h"
#endif
EOF
# 创建并填充 mpi_mod.h 文件
cat << EOF > mpi_mod.h
! mpi_mod.h
#if defined(VAR_MPI) && defined(USE_MPI_MOD_F90)
use mpi
#endif
EOF
echo "文件已创建并填充完成。"
复制代码
然后进行编译和安装
# 编译
make -j
复制代码
安装
# 安装
make install
复制代码
2.4 环境变量设置
export PATH=$HOME/Software/dalton2020_int64/dalton:$PATH
export DALTON_TMPDIR=$HOME/Software/dalton2020_int64/scratch
export OMP_NUM_THREADS=96
复制代码
说明:
$HOME/Software/dalton2020_int64/dalton 是你的 dalton 的路径
$HOME/Software/dalton2020_int64/scratch 为临时目录
OMP_NUM_THREADS=96 这里的 96 替换成你的 CPU 的核心数
2.5 ctest 运行测试
进入git 拉取的 dalton 下的 build 文件夹,使用 ctest 命令
ctest
复制代码
(, 下载次数 Times of downloads: 33)
上传 Uploaded
点击下载Click to download
主要是 8个报错,其中 144 这个和之前的 int32 版本一样报错,说明这个可能是普遍情况,
缺少了什么东西,接着就是 qmmm 系列的,最后一个是 cc 的一个
3. 参考文章
https://daltonprogram.org/documentation/
https://dalton-installation.readthedocs.io/en/latest/doc/general.html
https://gitlab.com/dalton/dalton/tree/release/2020
https://readit.plus/a/CgMKd/general.html
https://cloud.tencent.com/developer/article/1873724
http://sobereva.com/463
https://gitlab.com/dalton/dalton/-/issues/247
https://gitlab.com/dalton/dalton/-/issues/106
https://gitlab.com/dalton/dalton/-/issues/210
https://www.hpc2n.umu.se/resources/software/dalton
可以到我博客
https://wxyhgk.com/article/ubuntu-install-dalton2020
说的更全面
作者Author:
daddygao
时间:
2024-12-25 12:55
太棒了,参考了网上无数“教程”,装了好几次没成功,照着这个一次就装成功了。常年潜水,本次专门登陆上来表示对楼主的感谢!!!
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3