AiiDA 的配置 – conda虚拟环境下的本体与交互插件安装
AiiDA 的配置 – conda虚拟环境下的本体与交互插件安装

AiiDA 的配置 – conda虚拟环境下的本体与交互插件安装

AiiDA 与 Materials Cloud

简单来说,AiiDA 可以用于计算流程管理与重现和数据的共享。而 Materials Cloud 是一个数据与工具的分享平台。
AiiDA 的好处在于大一统的计算流程,可以在一个 Python 环境中解决大量数据管理问题,在重复性计算需要不断使用脚本的场景中可以起到很大的作用。

AiiDA

Materials Cloud

本文写于2021.04.13,使用的系统为 RHEL 8.3,在物理机和虚拟机中共复现两次后使用虚拟机版本 RHEL 8.3 记录 + 录制。

安装 AiiDA

首先尝试了全局安装 postgresql 和 rabbitmq,但是遇到了无法运行 py 文件、postgresql 连接莫名挂掉的问题,所以切换成了完全的 conda 虚拟环境安装。
不过为了万一以后还要切换回这条路,就不删除这部分记录了。

和 Anaconda 的 conda 命令类似,AiiDA 也有一个管理命令 verdi。verdi 的 setup 部分会采用 CLI 交互的方式,如果中途输入错了不能回到上一步,但是可以 Ctrl + C 退出重来。

另外,虚拟环境就这一点好,实在崩了救不回来了,conda remove – n ${VENV_NAME} –all 重新来过就好了,不怕系统爆炸。

全局安装(废弃)

postgresql:

安装:

sudo dnf install postgresql-server

系统会自动安装合适版本。

配置:

gedit /var/lib/pgsql/data/pg_hba.conf 

改成下面的样子(::1/0这行比较重要)

# "local" is for Unix domain socket connections only
local   all             all                                     trust
local   all             aiida                                     trust
local   all             postgres                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0            trust
# IPv6 local connections:
host    all             all             ::1/0            trust
# host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
# local   replication     all                                     ident
# host    replication     all             0.0.0.0/0            ident
# host    replication     all             ::1/128                 ident

好像也有办法一次性修改(在 aiida-vasp 插件中讲的)

sudo sed -i 's/ident/md5/g' /var/lib/pgsql/data/pg_hba.conf

在成功配置好后,记得使用以下命令。另外,在启动时记得切换到有 aiida 的虚拟环境。

reentry scan -r aiida

conda安装方法

参考了以下教程 Install AiiDA in Conda

  1. 创建环境+安装主程序:
conda create -n aiida -c conda-forge aiida-core aiida-core.services
conda activate aiida
reentry scan
  1. 不应属于此处的插件安装

这里插一句,所有需要使用的插件请在此时安装!否则有的插件会 crash 掉后面需要设置的 postgresql,解决办法只有 verdi profile delete,或者干掉
~/.aiida 文件夹重新配置(说的是 aiida-raspa,其他的目前没有发现这个问题,但是为了以防万一还是这时候做吧)。所以在此时要提前执行一下下一段的 pip 安装:

pip install aiida-vasp aiida-cp2k aiida-gaussian aiida-orca aiida-raspa # 或者其他你可能用得到的程序插件

在每次安装完类似插件后,都要重新执行 reentry scan 命令,否则 AiiDA 找不到。

此外,以下所有的配置均需要在虚拟环境中进行,留意前面的 conda 部分是否是刚刚设置好的虚拟环境,如果重启,是会自动退出/换回 base 环境的。记得换回来。

  1. 配置 postgresql:
(aiida) $ cd /home/tkaray/ # 或者其他
(aiida) $ initdb -D mylocal_db
(aiida) $ pg_ctl -D mylocal_db -l logfile start
  1. 配置 rabbitmq:
rabbitmq-server -detached
  1. 启动 daemon(官网教程不适合):
(aiida) $ verdi daemon start 2 # 这里的数字不能超过处理器内核数目

这时候会报错: Critical: no default profile defined: none

此时需要先运行:

verdi quicksetup

!!!此处需要注意,官网tutorial写的是先运行start后quicksetup,但是如果按照它的顺序就会报错。所以要反过来运行。

Quicksetup 步骤中需要写 profile name, mail, name, institution,其他的交给它来解决(不需要自己配置 postgresql 的账户、密码、权限、登录ip配置管理了)。

另外,此处只能写 quicksetup 不能写 setup,因为使用 setup 就需要输入 postgresql 的用户名,然而使用 conda 环境并不能用 postgres 用户进行配置,
因为conda环境并不会对该用户生效。

这些做完了,再按照官网的教程运行:

verdi daemon start
  1. conda 虚拟环境启动时的自动运行脚本

每次启动conda的时候,可能会出现rabbitmq,或是postgresql没有启动的情况,因此需要在启动conda虚拟环境的时候自动运行。
${CONDA_PREFIX}/etc/conda/activate.d/ 中添加以下脚本:

cd /home/tkaray/ # 改成你的用户名
pg_ctl -D mylocal_db -l logfile start
rabbitmq-server -detached
verdi daemon start
  1. 其它

全部配置好后,可以试着查看一下状态了:

verdi daemon status
verdi status

如果 出现了什么设置上的问题,需要删除 profile 再配置,需要输入:

verdi profile list # 看一下以前设置的名字
verdi profile delete quicksetup # 换成之前设置的名字

这里可以选择不删除数据库,并在下次自动连接。我没有对此进行尝试,选择了直接删除。但是如果在生产环境中,这样的操作可能会导致数据丢失。请万分注意选项。

配置 Aiida 的程序插件

由于 VASP 的插件教程写的最详细,所以在此处就继续参考它的方法了。但是请注意,前半段可能走不通,postgresql 会以各种方式 down 掉。因为这折腾了好几个晚上= =|| 所以我们仅参考以上配置后的部分。

AIIDA-VASP

  1. 添加新电脑
verdi computer setup

由于这次使用的是本机,所以我们要做的没有教程中这么复杂。Transport plugin: 可以选择 local ,消息队列选择了 direct。如果是远端需要使用ssh,还需要先设置好ssh登录用的key(见上面的原教程链接)。

Setup 过程没什么难点,中间弹出的两次 vim 窗口,一个是电脑运行所有 code 前会先执行的内容,用于配置环境变量。后面是结束后的内容。这里会看到
要求 MPI 版本,也就是至少要安装 intelMPI,openMPI,MPIch 中的其中一种。
对于我们来说,就在运行前(第一个 vim 窗口)写上以下内容吧:(没有测试过不写会不会出错,一般情况下重新 source 一次都没问题,以防万一就一直写着了)

source /home/tkaray/.bashrc

然后按照程序提示执行代码

verdi computer configure local ${YOUR_COMPUTER_NAME}
  1. AiiDA-VASP 的安装

VASP 版本的插件在文档中写的很清楚,其他程序也大同小异。如果找不到 input plugin,记得运行 reentry scan。

% verdi code setup
Info: enter "?" for help
Label: vasp
Description []:
Default calculation input plugin: ?
Info: Default calculation plugin to use for this code.
Select one of:
      arithmetic.add
      templatereplacer
      vasp.vasp
      vasp.vasp2w90
Default calculation input plugin: vasp.vasp
Installed on target computer? [True]:
Computer: mycluster
Remote absolute path: /usr/local/calc/vasp/vasp
Success: Code<1> vasp@mycluster created
  1. AiiDA-RASPA 的安装

关于RASPA的插件,如果在配置好quicksetup之后安装(如前所述),会带崩和 postgresql 数据库的连接。此时需要的是删除 profile,重新 quicksetup 连接数据库。应该可以选择保留数据库内容,这样就不会丢(大概)。但是这个操作很危险,如果不小心删错了数据就全完蛋了。
还好目前没有发现其他插件出现这个情况,但是还要小心。

# 如果你的 verdi status 显示数据库错误,执行下面的命令,没有错误就不要执行!!!
verdi profile delete ${PROFILE_NAME}
verdi quicksetup
  1. 关于 RASPA 安装中自己的错误

因为在verdi code setup步骤中环境变量设置有问题,在将相对路径改为绝对路径之后写错了,所以折腾了整整一天。最后是在aiida-files(设置的节点暂存目录)中挨个翻节点内容,找到了_scheduler-stderr.txt 中的未找到共享库错误才发现的。看来以后如果节点出错,可以在节点暂存目录中翻翻看。

error while loading shared libraries: libraspa2.so.0

这样的错误一般都是由于 LD_LIBRARY_PATH 环境变量设置有问题造成的。所以使用

verdi code delete raspa
verdi code setup 

重新设置一下运行前变量就好了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注