发布于: 2024-10-11最后更新: 2024-10-27字数 3537阅读时长 9 分钟

type
status
date
slug
summary
tags
category
icon
password
Property
Oct 27, 2024 07:21 PM
URL
Notion AI 总结:
Notion AI 总结:
本文详细介绍了在 Ubuntu 22.04 系统上安装 Dalton 2020 版本的步骤。文章涵盖了从准备工作到最终测试的整个过程,包括安装必要的工具和依赖、获取和配置 Dalton 源代码、编译和安装软件、设置环境变量以及运行测试。通过提供详细的命令和解释,文章为不同水平的用户提供了一个全面的指南,使他们能够成功完成 Dalton 的安装和配置。无论是新手还是经验丰富的用户,都能从这篇文章中获得有用的信息,顺利地在 Ubuntu 系统上部署 Dalton 2020 版本。
💡
说明:
本文由 ChatGPT 和 Notion AI 辅助完成
系统:Ubuntu 22.04,20.04 均测试成功
dalton 版本:Dalton 2020
Dalton 是一个开源的量子化学计算软件套件,专门用于研究分子的电子结构。
Dalton 的优点在于它能够进行各种高级的电子结构计算(如耦合簇、MCSCF、密度泛函理论等),并且提供丰富的分子性质计算功能,如磁性质和光学性质。同时,它支持线性缩放算法,适合大型分子体系计算,且具备开源性质,便于用户进行二次开发。

0.准备工作

如果你是新手或者不想折腾可以这样做
这样设置之后,下面的代码可以无脑复制粘贴了
 

0.1 ssh 终端工具

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

0.2 tmux 安装

为了我们后续的步骤不断连,以及避免各种关闭窗口的失误什么的,这里先安装 tmux
 
然后使用 tmux 命令建立一个后台窗口,防止断连
 
后续如果遇到断连,误操作关闭窗口等各种不小心的问题,可以重新打开终端,然后运行
可以进入到之前的安装部分

0.3 cmake,git 安装

安装 cmake,git
 
检查 cmake
notion image

0.4 编译器的安装

 
然后检查是否安装正确
notion image

0.5 openmpi 安装

 
openmpi 安装检查
notion image

0.6 python 设置

确认你是有有 Python2 的环境,如果没有就需要用符号链接
notion image
如图所示,我这里 Python3 是有的,Python 没有,即 Python 2 或指向 Python 3 的 python 符号链接不存在, 可以通过创建 Python 的符号链接来解决这个问题:
这条命令会将 python 命令指向 python3,这样你就可以直接使用 python 作为命令了。
 
如果不做这一步检查,后面就会提示下面的 “ python: 没有那个文件或者目录”
notion image

0.7 数学库安装

 
检查数学库
notion image

1. int32 安装(不推荐)

这部分先看看,熟悉下流程,不建议用这部分来安装,看完后,直接看 int64 部分的安装

1.1 拉取项目

首先拉取项目

1.2 setup

以下是几种常见的配置场景,以及它们各自适用的情况:
标准并行编译(使用 MPI)
如果你的系统中已经安装了 MPI 编译器(如 mpif90mpiccmpicxx),可以直接使用以下命令配置:
或者直接使用 --mpi 选项,它是上述命令的快捷方式:
适用场景:适用于常见的 MPI 并行环境(如 OpenMPI 或 MPICH)。
使用 Intel MPI 并行编译
如果你使用 Intel 编译器(如 mpiifortmpiiccmpiicpc),则可以使用以下命令:
适用场景:适用于安装了 Intel MPI 的环境,可以更好地优化 Intel 处理器上的性能。
使用 Intel 编译器的串行编译(链接并行 MKL 库)
如果你只需要串行编译(不使用 MPI),但是仍然希望链接到 Intel 的 MKL 库,可以使用以下命令:
适用场景:适用于需要串行计算但依赖 MKL 并行库进行矩阵运算加速的场景。
使用 GNU 编译器的串行编译(不建议)
如果你没有 Intel 编译器,而是使用 GNU 编译器,可以使用以下命令:
适用场景:适用于标准的 GNU 编译器环境,一般情况下可用于测试和小规模计算。
Cray 系统的并行编译
在 Cray 系统上进行并行编译时,可以使用 Cray 的编译器(如 ftnccCC),并启用 --cray--mpi 选项:
适用场景:适用于 Cray 超算系统,使用 Cray 的编译器和并行库。
SGI 系统的并行编译
如果你在 SGI 系统上,并且使用 Intel 编译器和 MPT(Message Passing Toolkit),可以使用以下命令:
适用场景:SGI 系统环境(如 Altix 系列),支持高效的消息传递和并行计算。
 
我是用的第一种,标准并行编译(使用 MPI)
 
进入 dalton 文件夹
 
然后 setup
setup 选项
类别
选项
描述
默认值
位置参数
build path
指定构建目录的路径
dalton 所在的目录
基本选项
-h, --help
显示帮助信息并退出
False
--fc STRING
指定 Fortran 编译器
自动选择(或根据 FC=... 环境变量)
--cc STRING
指定 C 编译器
自动选择(或根据 CC=... 环境变量)
--cxx STRING
指定 C++ 编译器
自动选择(或根据 CXX=... 环境变量)
--type {release,debug,profile}
设置 CMake 的构建类型,release 表示优化后的版本,debug 用于调试,profile 用于性能分析。
release
--int64
使用 64 位整数(很少需要,如果不确定,请不要使用)。
False
--prefix PATH
设置安装路径 (make install 时使用的路径)。
None
--show
显示 cmake 命令并退出(不会执行实际构建)。
False
--cmake STRING
指定 cmake 命令,比如:--cmake cmake28
cmake
并行化选项
--mpi
启用 MPI 并行化支持。
False
--sgi-mpt
启用 SGI MPT 并行化支持。
False
数学库选项
--mkl --mkl --mkl {sequential,parallel,cluster}
指定 Intel MKL 库类型: - sequential:不使用多线程库 - parallelparallel:使用 OpenMP 线程库 - cluster:使用 MKL 集群库
None
--blas {auto,builtin,none,/full/path/lib.a}
指定 BLAS 库的路径或方式: - auto:自动检测 - builtin:使用内置库 - none:禁用 BLAS - 指定路径:指定完整路径
auto
--lapack --lapack {auto,builtin,none,/full/path/lib.a}
指定 LAPACK 库的路径或方式:与 --blas 选项类似。
auto
--explicit-libs STRING
传递给链接器的额外库路径。
None
--cray
使用 Cray 编译器包装器(禁用数学库检测和内置数学库实现)。
False
高级选项
--check
启用边界检查(编译时检查数组边界,调试用)。
False
--coverage
启用代码覆盖率分析(编译时生成代码覆盖率信息,测试用)。
False
--static
静态链接库文件(不会依赖共享库)。
False
-D STRING
将选项直接传递给 cmake,比如:-D ENABLE_THIS=1 -D ENABLE_THAT=1
None
--host STRING
为指定的 host 使用预定义配置。
None
--generator STRING
设置 cmake 的生成器类型,比如 Unix MakefilesNinja
None
--driver {bash,python}
指定驱动脚本使用 bashpython(实验性功能)。
bash
额外编译选项
--extra-fc-flags STRING
为 Fortran 编译器传递额外的编译选项。
None
--extra-cc-flags STRING
为 C 编译器传递额外的编译选项。
None
--extra-cxx-flags STRING
为 C++ 编译器传递额外的编译选项。
None
 
说明:
  • --prefix 是定义你的 dalton 后续的安装路径的
  • --mpi 表示采用 mpi 并行
  • --blas=auto --lapack=auto 表示用用这两个数学库,auto 表示自动寻找环境变量
这里如果出现错误,或者后期需要重新配置,可以这样
notion image
这个时候需要在 dalton 的下载目录,删除 CMakeCache.txt 文件
 
安全起见确认一下是否正确
notion image

1.3 编译安装

进入 build 目录
 
编译
 
安装
 

1.4 设置环境变量

环境变量
说明:
  • $HOME/Software/dalton2020/是你的 dalton 的路径
  • $HOME/Software/dalton2020/scratch 为临时目录
  • OMP_NUM_THREADS=96 这里的 96 替换成你的 CPU 的核心数

1.5 ctest 运行测试

进入 build 文件夹,使用 ctest 命令
notion image
 
有 500 多个例子,经过一段时间的运行,全部完成了了,就这个 144 例子失败了,说明这个安装是成功的
notion image
由于我目前对 dalton 这个软件不熟悉,这个可能是版本的问题造成了一些什么问题,也可能是关键词不兼容?具体原因目前不清楚

1.6 int32 的缺点

使用 int32 版本编译的话,最大内存只能设置成 16 GB,对于企业,或者稍微大一点的分子来说显然是不够用的,因此,使用下面的 int64 版本更好.

2. int64 安装(推荐)

首先拉取项目

2.1 准备工作

dalton/DALTON/gen1int 里面去,修如下四个文件
gen1int_matrix.F90gen1int_host.F90 gen1int_shell.F90gen1int_api.F90
notion image
使用 XTerminal 直接查找替换就行了,将这四个文件里面的所有的 #include "mpif.h"
全部替换成
notion image
当然了你也可以用 shell 命令进行替换
脚本
 
解释一下为什么需要这么做,因为mpif.h 只能处理 32 位数据,但是我们使用 --int64 告诉 Dalton 需要 64 位数据,所以出错。
我们的代码
其中 mpi_mod.h 是用于条件性地包含 use mpi 模块,而 mpi_header.h 则用于包含 mpif.h,以便在某些情况下仍然使用传统的 mpif.h 接口。
use mpi 可以自动处理 32 和 64 位数据,避免数据大小不匹配。

2.2 setup

进入 dalton 下载文件夹,然后建立一个安装目录
 
说明:
  • $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_mod.h 填入如下内容,然后保存
自动化脚本
以下是一个简单的 Bash 脚本,可以帮助你创建并填充 mpi_header.hmpi_mod.h 文件:
 
然后进行编译和安装
 
安装

2.4 环境变量设置

说明:
  • $HOME/Software/dalton2020_int64/dalton 是你的 dalton 的路径
  • $HOME/Software/dalton2020_int64/scratch 为临时目录
  • OMP_NUM_THREADS=96 这里的 96 替换成你的 CPU 的核心数

2.5 ctest 运行测试

进入git 拉取的 dalton 下的 build 文件夹,使用 ctest 命令
notion image
主要是 8个报错,其中 144 这个和之前的 int32 版本一样报错,说明这个可能是普遍情况,缺少了什么东西,接着就是 qmmm 系列的,最后一个是 cc 的一个
 

3. Dalton软件简单使用

可以到 https://daltonprogram.org/documentation/ 这里查看更详细的说明
dalton 程序
可选参数
描述
必须输入的
可选输入文件
备注
dalton
options
用于指定程序选项
name1.dal
name2.mol
- options 是一个可选项,可以省略
-N 96
开多少个任务
只对 MPI 并行版有意义
-omp 96
使用 MKL 库以 OpenMP 并行时用 96 线程
默认使用 OMP_NUM_THREADSMKL_NUM_THREADS 环境变量指定的线程数
-mb 2500
每个 MPI 进程最大使用 2500MB 内存
对 MPI 版而言,指每个进程的内存上限
-gb 5
每个 MPI 进程最大使用 5GB 内存
作用同 -mb,但单位是 GB
-noarch
不生成 .tar.gz 文件
默认会生成归档文件
-nobackup
不备份以前的输出文件
默认备份旧的输出文件
-ow
输出文件直接生成到当前目录
默认会先在临时目录生成,结束后再移到当前目录
-o [文件名]
指定输出文件名
可以直接指定自定义的输出文件名
-omp 96
用于 OpenMP 版本的线程数设置
看着很多,实际上我个人认为常用的就是 -omp -gb -ow
例如运行 a 使用 96核心,100 GB 内存输出文件直接生成到当前目录
文件下载
 
这里 a 代表 a.dal ,以及 a.mol
notion image
 
最后用 tail a.out 查看一下结果
notion image

4. 参考文章

  1. https://daltonprogram.org/documentation/
  1. https://dalton-installation.readthedocs.io/en/latest/doc/general.html
  1. https://gitlab.com/dalton/dalton/tree/release/2020
  1. https://readit.plus/a/CgMKd/general.html
  1. https://cloud.tencent.com/developer/article/1873724
  1. http://sobereva.com/463
  1. https://gitlab.com/dalton/dalton/-/issues/247
  1. https://gitlab.com/dalton/dalton/-/issues/106
  1. https://gitlab.com/dalton/dalton/-/issues/210
  1. https://www.hpc2n.umu.se/resources/software/dalton
 

目前存在的问题(已解决)

无法运行超过 16 GB的任务,使用 --int64 不行,后续编译会报错,类似这种
notion image
问题
用户Andreas Nyvang在使用Dalton软件时遇到读取基组文件ANO-RCC-MB的问题,该问题在最新版本出现,而在旧版本中没有。同时,他询问了关于32位整数编译版本的Dalton内存设置限制。开发者Jógvan Magnus Haugaard Olsen确认了内存限制约为16GB,并推测文件格式问题可能是导致读取错误的原因。Andreas Nyvang尝试了重命名文件和使用不同格式的基组,但仍然存在问题。维护者Erik Kjellgren解释了Dalton ANO基组格式与Molcas格式的相似之处,并指出可能存在的格式差异。
 
问题
用户报告了在使用 Intel OneAPI 编译器编译 DALTON 2020.1 的 64 位版本时,运行超过一个 MPI 进程的计算会导致段错误,并提出了可能的解决方案和自动化头文件或模块使用的建议。
根据搜索结果,解决64位版本Dalton 2020.1在使用Intel MPI时出现的段错误的方法如下:
  1. 问题描述:在使用Intel OneAPI工具链编译64位版本的Dalton 2020.1时,如果运行涉及超过1个MPI进程的计算,则在SYMGRP输出后会发生段错误。这个问题出现在所有OneAPI版本中,无论是使用经典编译器(如ifort等)还是LLVM编译器(如ifx等)。
  1. 错误原因:该问题可能是由于Dalton中使用的mpif.h头文件,该文件中定义了MPI_INTEGER_KIND为4字节。
  1. 解决方案:通过手动将所有#include "mpif.h"语句更改为在implicit行之前的use mpi语句,可以消除段错误,使计算按预期运行。但是,由于代码中的一些评论提到use mpi可能会引起MPICH的问题,因此提出了一种自动化使用头文件或模块的方法:
以上步骤为解决该问题的基本方法,具体实施可能还需要根据实际代码情况进行调整。同时,用户也提到了对于该问题的跟踪器可能存在错误,并询问是否需要将问题移动到正确的问题跟踪器上。
 
问题
本文讨论了用户在尝试使用64位整数和MPI编译Dalton程序时遇到的问题。用户尝试了两种不同的编译设置,但都遇到了错误。最终,用户发现需要一个64位的MPI库,并成功使用Intel、MKL和OpenMPI(构建时使用64位整数)安装了Dalton。尽管如此,用户仍然收到与DFT .c文件相关的警告,并建议在设置阶段添加检查以确认所选MPI库是否支持64位。
notion image
 

Loading...
SSH 隧道:让内网集群畅联外网

SSH 隧道:让内网集群畅联外网


超微主板风扇调速指南:IPMI配置与自动化

超微主板风扇调速指南:IPMI配置与自动化


公告
公告
博客重大更新,更换为matery主题,阅读体验更加好了。
和博主联系
notion image