计算化学公社

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

[Dalton] ubuntu 安装 Dalton

[复制链接 Copy URL]

246

帖子

7

威望

2022

eV
积分
2408

Level 5 (御坂)

本帖最后由 wxyhgk 于 2024-10-11 17:35 编辑


说明:

本文由 ChatGPT 和 Notion AI 辅助完成

系统:Ubuntu 22.04,20.04 均测试成功

dalton 版本:Dalton 2020





Dalton 是一个开源的量子化学计算软件套件,专门用于研究分子的电子结构。

Dalton 的优点在于它能够进行各种高级的电子结构计算(如耦合簇、MCSCF、密度泛函理论等),并且提供丰富的分子性质计算功能,如磁性质和光学性质。

同时,它支持线性缩放算法,适合大型分子体系计算,且具备开源性质,便于用户进行二次开发。


0. 准备工作
如果你是新手或者不想折腾可以这样做


  1. # 如果不存在就建立 Download 文件夹
  2. mkdir -p $HOME/Downloads

  3. # 如果不存在就建立 Software/dalton2020 文件夹,这是 dalton 安装路径
  4. mkdir -p $HOME/Software/dalton2020

  5. # dalton 临时计算目录
  6. mkdir -p $HOME/Software/dalton2020/scratch
复制代码


这样设置之后,下面的代码可以无脑复制粘贴了


0.1 ssh 终端工具

到 (https://www.xterminal.cn/) 下载这个好用的 ssh 工具,有 ai 提示,系统监控,虽然有些小 bug,我个人认为非常值得推荐

0.2 tmux 安装

为了我们后续的步骤不断连,以及避免各种关闭窗口的失误什么的,这里先安装 tmux


  1. sudo apt update
  2. sudo apt install tmux -y
复制代码


然后使用 tmux 命令建立一个后台窗口,防止断连

  1. tmux new -s dalton
复制代码

后续如果遇到断连,误操作关闭窗口等各种不小心的问题,可以重新打开终端,然后运行


  1. tmux attach -t dalton
复制代码


可以进入到之前的安装部分


0.3 cmake,git 安装

安装 cmake,git

  1. sudo apt install cmake git -y
复制代码


检查 cmake
  1. cmake --version
复制代码


0.4 编译器的安装


  1. sudo apt install libhwloc-dev libevent-dev -y
复制代码
  1. sudo apt install libhdf5-dev libeigen3-dev libboost-dev -y
复制代码
  1. sudo apt install libopenblas-dev gfortran gcc g++ -y
复制代码


然后检查是否安装正确
  1. gfortran --version
  2. gcc --version
  3. g++ --version

  4. mpif90 --version
  5. mpicc --version
  6. mpicxx --version
复制代码


0.5 openmpi 安装

  1. sudo apt install openmpi-bin openmpi-common libopenmpi-dev -y
复制代码


openmpi 安装检查


  1. mpirun --version
复制代码


0.6 python 设置

确认你是有有  Python2 的环境,如果没有就需要用符号链接


  1. # python 2 环境检测
  2. python -V

  3. # python3 环境检测
  4. python3 -V
复制代码


如图所示,我这里 Python3 是有的,Python 没有,即 Python 2 或指向 Python 3 的 python 符号链接不存在, 可以通过创建 Python 的符号链接来解决这个问题:


这条命令会将 python 命令指向 python3,这样你就可以直接使用 python 作为命令了。

如果不做这一步检查,后面就会提示下面的 “ python: 没有那个文件或者目录”


0.7 数学库安装

  1. sudo apt-get install libblas-dev liblapack-dev -y
复制代码

检查数学库

  1. dpkg -l | grep blas
  2. dpkg -l | grep lapack
复制代码


1. int32 安装(不推荐)
这部分先看看,熟悉下流程,不建议用这部分来安装,看完后,直接看 int64 部分的安装

1.1 拉取项目

  1. cd $HOME/Downloads
  2. 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 文件夹

  1. cd dalton
复制代码


然后 setup

  1. ./setup --prefix=$HOME/Software/dalton2020 --mpi --blas=auto --lapack=auto
复制代码

说明:
  • --prefix 是定义你的 dalton 后续的安装路径的
  • --mpi 表示采用 mpi 并行
  • --blas=auto --lapack=auto 表示用用这两个数学库,auto 表示自动寻找环境变量
这里如果出现错误,或者后期需要重新配置,可以这样


这个时候需要在 dalton 的下载目录,删除 CMakeCache.txt 文件



  1. rm ./build/CMakeCache.txt
复制代码

安全起见确认一下是否正确

  1. ./setup --show
复制代码



1.3 编译安装
进入 build 目录

  1. cd build
复制代码

编译

  1. make -j
复制代码

安装

  1. make install
复制代码

1.4 设置环境变量


环境变量

  1. export PATH=$HOME/Software/dalton2020/dalton:$PATH
  2. export DALTON_TMPDIR=$HOME/Software/dalton2020/scratch
  3. 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 命令

  1. cd build

  2. ctest
复制代码

有 500 多个例子,经过一段时间的运行,全部完成了了,就这个 144 例子失败了,说明这个安装是成功的




由于我目前对 dalton 这个软件不熟悉,

这个可能是版本的问题造成了一些什么问题,也可能是关键词不兼容?具体原因目前不清楚

1.6 int32 的缺点

使用 int32 版本编译的话,最大内存只能设置成 16 GB,

对于企业,或者稍微大一点的分子来说显然是不够用的,因此,使用下面的 int64 版本更好.


2. int64 安装(推荐)

首先拉取项目

  1. cd $HOME/Downloads
  2. 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



使用 XTerminal 直接查找替换就行了,将这四个文件里面的所有的  #include "mpif.h"




全部替换成

  1. #include "mpi_mod.h"
  2. #include "mpi_header.h"
复制代码

当然了你也可以用 shell 命令进行替换

  1. # 进入目标目录
  2. cd DALTON/gen1int

  3. # 定义要修改的文件
  4. files=("gen1int_matrix.F90" "gen1int_host.F90" "gen1int_shell.F90" "gen1int_api.F90")

  5. # 遍历文件并进行替换
  6. for file in "${files[@]}"
  7. do
  8.     sed -i 's/#include "mpif.h"/#include "mpi_mod.h"\n#include "mpi_header.h"/g' "$file"
  9.     echo "已处理文件: $file"
  10. done

  11. echo "所有文件处理完成"

  12. # 回到当前目录
  13. cd -
复制代码

解释一下为什么需要这么做,因为mpif.h 只能处理 32 位数据,但是我们使用 --int64 告诉 Dalton 需要 64 位数据,所以出错。

我们的代码

  1. #include "mpi_mod.h"
  2. #include "mpi_header.h"
复制代码

其中 mpi_mod.h 是用于条件性地包含 use mpi 模块,而 mpi_header.h 则用于包含 mpif.h,以便在某些情况下仍然使用传统的 mpif.h 接口。

用 use mpi 可以自动处理 32 和 64 位数据,避免数据大小不匹配。



2.2 setup

进入 dalton 下载文件夹,然后建立一个安装目录

  1. mkdir -p $HOME/Software/dalton2020_int64
复制代码


编译

  1. ./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 填入如下的内容,然后保存


  1. ! mpi_header.h
  2. #if defined(VAR_MPI) && !defined(USE_MPI_MOD_F90)
  3. #include "mpif.h"
  4. #endif
复制代码


mpi_mod.h 填入如下内容,然后保存

  1. ! mpi_mod.h
  2. #if defined(VAR_MPI) && defined(USE_MPI_MOD_F90)
  3.   use mpi
  4. #endif

复制代码


以下是一个简单的 Bash 脚本,可以帮助你创建并填充 mpi_header.hmpi_mod.h 文件:
  1. # 进入 build 文件夹
  2. cd build

  3. # 创建并填充 mpi_header.h 文件
  4. cat << EOF > mpi_header.h
  5. ! mpi_header.h
  6. #if defined(VAR_MPI) && !defined(USE_MPI_MOD_F90)
  7. #include "mpif.h"
  8. #endif
  9. EOF

  10. # 创建并填充 mpi_mod.h 文件
  11. cat << EOF > mpi_mod.h
  12. ! mpi_mod.h
  13. #if defined(VAR_MPI) && defined(USE_MPI_MOD_F90)
  14.   use mpi
  15. #endif
  16. EOF

  17. echo "文件已创建并填充完成。"
复制代码



然后进行编译和安装
  1. # 编译
  2. make -j
复制代码

安装

  1. # 安装
  2. make install
复制代码

2.4 环境变量设置
  1. export PATH=$HOME/Software/dalton2020_int64/dalton:$PATH
  2. export DALTON_TMPDIR=$HOME/Software/dalton2020_int64/scratch
  3. 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 命令

  1. ctest
复制代码




主要是 8个报错,其中 144 这个和之前的 int32 版本一样报错,说明这个可能是普遍情况,

缺少了什么东西,接着就是 qmmm 系列的,最后一个是 cc 的一个


3. 参考文章


可以到我博客 https://wxyhgk.com/article/ubuntu-install-dalton2020 说的更全面



评分 Rate

参与人数
Participants 4
eV +19 收起 理由
Reason
谢积环 + 5 赞!
hongbinChi + 4
qczcb2 + 5 谢谢分享
火星哥 + 5 谢谢分享

查看全部评分 View all ratings

1

帖子

0

威望

47

eV
积分
48

Level 2 能力者

2#
发表于 Post on 2024-12-25 12:55:21 | 只看该作者 Only view this author
太棒了,参考了网上无数“教程”,装了好几次没成功,照着这个一次就装成功了。常年潜水,本次专门登陆上来表示对楼主的感谢!!!

本版积分规则 Credits rule

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

GMT+8, 2026-1-25 01:34 , Processed in 0.232525 second(s), 24 queries , Gzip On.

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