Ubuntu22.04 에 aiida-quantumespresso 4.0.0 설치하기

By | 2022년 08월 14일

여기서는 ubuntu 22.04 에 aiida-quantumespresso 설치하는 방법에 대하여 정리하였다. aiida-core에도 설치방법이 자세히 나와 있으나 직접 설치하며 겪었던 시행착오를 포함하여 작성하여 추후 다시 설치할 떄 참고하고자 한다.

aiida-quantum espresso대한 내용은 여기를 참조한다.

1 quantum espresso 설치

먼저 Quantum espresso를 설치해야 하는데 방법에 대해서는 이전 posting을 참조한다.

2. aiida-core 설치

2.1 필요한 패키지 선설치

다음과 같은 명령을 실행하여 필요한 pkg를 설치한다.

$ sudo apt install git python3-dev python3-pip postgresql postgresql-server-dev-all postgresql-client rabbitmq-server python3.10-venv

2.2 AiiDA (core) 설치

$ python -m venv ~/envs/aiida

$ source ~/envs/aiida/bin/activate
(aiida) $ pip install wheel
(aiida) $ pip install aiida-core
(aiida) $ pip install aiida-core[atomic_tools,docs]

2.3 Setup profile

aiida 설치 후 profile을 설정한다. 이 과정에 대한 자세한 내용은 여기 를 참조하기 바란다.

(aiida) $ verdi quicksetup
Info: enter "?" for help
Info: enter "!" to ignore the default and set no value
Profile name: me
Email Address (for sharing data): me@user.com
First name: my
Last name: name
Institution: where-i-work

$ verdi profile show dia1
Info: Profile: dia1
 ----------------------  -------------------------------------------
aiidadb_backend         django
aiidadb_engine          postgresql_psycopg2
aiidadb_host            localhost
aiidadb_name            dia1_myname_3a9ffc1aa329784eee9a5ce8a1c13997
aiidadb_pass            4r4kvYL70WYSkHdx
aiidadb_port            5432
aiidadb_repository_uri  file:///home/me/.aiida/repository/dia1
aiidadb_user            aiida_qs_me_1
broker_host             127.0.0.1
broker_password         guest
broker_port             5672
broker_protocol         amqp
broker_username         guest
broker_virtual_host
default_user_email      me@gmail.com
options                 {}
profile_uuid            9a19401ccd3148c98d720ef6df77d609
----------------------  -------------------------------------------

2.4 verdi daemon 시작하기

다음과 같은 방법으로 verdi daemon을 시작한다.

(aiida) $ verdi daemon start 2

만약 아래와 같은 에러가 발생하면,

Starting the daemon with 2 workers.verdi daemon start 2.. FAILED

다음의 명령을 실행한다.

$ verdi daemon start-circus --foreground

에러의 마지막 줄이 다음과 같다면

ValueError: /home/me/envs/aiida/lib/python3.1/site-packages does not exist

다음과 같이 폴더 링그를 설정하여 준다.

(aiida) $ sudo ln -s /home/me/envs/aiida/lib/python3.10 /home/me/envs/aiida/lib/python3.1
(aiida) $ verdi daemon start 2

2.5 설정 상태 확인

다음의 명령으로 verdi 의 상태를 확인한다.

(aiida) $ verdi status

✔ config dir: /home/me/.aiida
✔ profile: On profile dia1
✔ repository: /home/me/.aiida/repository/dia1
✔ postgres: Connected as aiida_qs_me_1@localhost:5432
Warning: RabbitMQ v3.9.13 is not supported and will cause unexpected problems!
Warning: It can cause long-running workflows to crash and jobs to be submitted multiple times.
Warning: See https://github.com/aiidateam/aiida-core/wiki/RabbitMQ-version-to-use for details.
⏺ rabbitmq: Incompatible RabbitMQ version detected! Connected to RabbitMQ v3.9.13 as amqp://guest:guest@127.0.0.1:5672?heartbeat=600
✔ daemon: Daemon is running as PID 9204 since 2022-07-17 11:18:45

아래와 같은 에러 메시지가 보이면

if Warning: RabbitMQ v3.9.13 is not supported and will cause unexpected problems!

다음과 같이 rabbitmq.conf 설정파일을 만들어 준다.

(aiida) $ sudo su root
(aiida) $ vim /etc/rabbitmq/rabbitmq.conf

다음의 내용을 삽입한다.

# 100 hours in milliseconds (increase if you expect your workflows to run longer)
consumer_timeout = 3600000

그리고

(aiida) $ service rabbitmq-server restart
(aiida) $ rabbitmq-diagnostics status 

2.6 Verdi 설정

2.6.1 Tab-completion 설정하기

bash 설정파일인 .bashrc 또는 .bash_profile 에 다음 내용을 넣어준다.

#
eval "$(_VERDI_COMPLETE=bash_source verdi)"
#

2.6.2 verdi profile 설정하기

verdi config 설정을 보려면

(aiida) $ verdi config list

name                                   source    value
-------------------------------------  --------  -----------------------
autofill.user.email                    global    me@gmail.com
autofill.user.first_name               global    hyun
autofill.user.institution              global    fami
autofill.user.last_name                global    sohn
caching.default_enabled                default   False
caching.disabled_for                   default
caching.enabled_for                    default
daemon.default_workers                 default   1
daemon.timeout                         default   20
daemon.worker_process_slots            default   200
db.batch_size                          default   100000
logging.aiida_loglevel                 default   REPORT
logging.aiopika_loglevel               default   WARNING
logging.alembic_loglevel               default   WARNING
logging.circus_loglevel                default   INFO
logging.db_loglevel                    default   REPORT
logging.kiwipy_loglevel                default   WARNING
logging.paramiko_loglevel              default   WARNING
logging.plumpy_loglevel                default   WARNING
logging.sqlalchemy_loglevel            default   WARNING
rmq.task_timeout                       default   10
runner.poll.interval                   default   60
transport.task_maximum_attempts        default   5
transport.task_retry_initial_interval  default   20
verdi.shell.auto_import                default
warnings.rabbitmq_version              default   True
warnings.showdeprecations              default   True

2.6.3 Setup verdi computer

computer 를 다음과 같은 방법으로 설정한다.

(aiida) $ verdi computer setup
Computer label: dia
Hostname: diamond
Description []: my computer
Transport plugin: core.local
Scheduler plugin: core.slurm
Shebang line (first line of each script, starting with #!) [#!/bin/bash]: 
Work directory on the computer [/scratch/{username}/aiida/]: /home/me/Works/aiida
Mpirun command [mpirun -np {tot_num_mpiprocs}]: 
Default number of CPUs per machine: 8
Default amount of memory per machine (kB).: 64000
Escape CLI arguments in double quotes [y/N]: y

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2

Success: Computer<1> dia created
Report: Note: before the computer can be used, it has to be configured with the command:
Report:   verdi -p me -qe1 computer configure core.local dia
(aiida) $ verdi -p me -qe1 computer configure core.local dia

To list computer

$ verdi computer list -a
$ verdi computer show dia1
--------------  ------------------------------------
Label           dia
PK              3
UUID            38637a2d-b388-4344-8cc5-c8b8bd0cf20c
Description     my computer
Hostname        diamond
Transport type  local
Scheduler type  slurm
Work directory  /home/me/Works/aiida
Shebang         #!/bin/bash
Mpirun command  mpirun -np {tot_num_mpiprocs}
Prepend text
Append text
--------------  ------------------------------------

2.6.4 Code Setup

code 목록을 보려면 다음의 명령을 실행한다.

(aiida) $ verdi code list

quantum espresso를 사용하여 계산을 하려는 경우, pw.x 를 verdi code 로 설정하여야하는데, 아래의 방법을 따라 설정한다.

먼저 aiida-quantum-espresso를 설치한다.

(aiida) $ pip install aiida-quantumespresso

현재 aiida-quantumespresso 최신 버전인 4.0.0 이 설치된다.

그리고 선호하는 편집기를 사용하여 다음의 파일을 만들고 아래의 내용을 넣어준다.

code-pw70.yml

---
label: "qe-7.0-pw"
description: "quantum_espresso v7.0"
input_plugin: "quantumespresso.pw"
on_computer: true
remote_abs_path: "/usr/local/qe-7.0/bin/pw.x"
computer: "dia"
prepend_text: "ulimit -s unlimited"
append_text: " "

그리고 다음의 명령을 실행한다.

$ verdi code setup --config code-pw70.yml

ph.x, pp.x, cp.x ... 등도 같은 방법으로 설정한디.

설정된 code의 리스트를 보려면

$ verdi code list
# List of configured codes:
# (use 'verdi code show CODEID' to see the details)
* pk 103 - qe-7.0-pw@dia
* pk 104 - qe-7.0-dos@dia
* pk 105 - qe-7.0-cp@dia
* pk 106 - qe-7.0-create_kpoints_from_distance@dia
* pk 107 - qe-7.0-epw@dia
* pk 108 - qe-7.0-matdyn@dia
* pk 109 - qe-7.0-namelists@dia
* pk 110 - qe-7.0-neb@dia
* pk 111 - qe-7.0-ph@dia
* pk 112 - qe-7.0-pp@dia
* pk 113 - qe-7.0-projwfc@dia
* pk 114 - qe-7.0-pw2gw@dia
* pk 115 - qe-7.0-pw2wannier90@dia
* pk 116 - qe-7.0-pwimmigrant@dia
* pk 117 - qe-7.0-q2r@dia
* pk 118 - qe-7.0-seekpath_structure_analysis@dia

2.7 Jupyter 설치하기

jupyter 를 다음과 같이 설치한다.

$ pip install jupyterlab
$ jupyter notebook

jupyter notebook에서 the aiida magics extension 을 로딩하려면 다음의 명령을 실행한다.

%load_ext aiida

그리고 VERDI profile을 다음과 같은 방법으로 로딩한다.

%aiida
%verdi status

로딩시 에러가 발생하는 경우 다음과 같이 추가 설치 및 설정을 한다.

$ source ~/env/aiida/bin/activate
(aiida) $ pip install ipykernel
(aiida) $ python -m ipykernel install --user --name=aiida_venv

$ cp -r  ~/envs/aiida/lib/python3.10/site-packages/aiida/tools/ipython/*  ~/.ipython/profile_default/startup/

3. Quantumm Espresso aiida plugin 설치

3.1 aiida-quantumespresso plugin

verdi code 를 설정하기 위해 이미 'aiida-quantumespresso' 를 설치하였을 것이지만, 만약 아직 설치가 않되었다면 다음과 같이 설치한다.

(aiida) $ pip install aiida-quantumespresso

3.2 pseudopotentials 설치

sssp pseudopotential을 다음의 명령을 실행하여 설치한다.

$ pip install aiida-pseudo
$ aiida-pseudo install sssp

Pseudo Dojo library를 설치하려면 다음과 같이한다.


aiida-pseudo install pseudo-dojo

설치된 포텐셜 라이브러리는 다음의 명령으로 확인할 수 있다.


$ aiida-pseudo list

4. Slurm 스케줄러 설치

이전 포스팅을 참조한다.

4. 테스트

이렇게 설치한 aiida-quantumespresso 응 이용하여 예를 계산하여 보자.

BaTiO3 예 를 사용해 보자.

계산시
'pw-6.3@TheHive' ==> 설치된 code
core.struture ==> strucutre
core.dict ==> dict
core.array.kpoints ==> array.kpoints

으로 수정하여 사용한다.

여기에 정리한 방법으로 단일 컴퓨처에서는 작동하는 것을 확인하였으나 cluster에서는 아직 작동하지 않는다.
cluster에 설치하는 방법에 대해서는 추후에 정리하고자 한다.

References

  1. aiida-core 설치
  2. aiida-quamtumespresso 설치
  3. rabbitmq-cluster 설치

답글 남기기