여기서는 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에 설치하는 방법에 대해서는 추후에 정리하고자 한다.