ORCA to pakiet wykorzystujący do obliczeń metody ab initio, funkcjonałów gęstości (DFT) oraz metody półempiryczne (SCF-MO). Służy m.in. do przeprowadzania optymalizacji geometrii oraz przewidywania parametrów spektroskopowych na różnych poziomach.
ORCA w CI TASK
- Aktualnie zainstalowane wersje: 6.1.0, 6.0.1
- Miejsce instalacji: Tryton Plus
- Autor: Frank Neese, MPI for Chemical Energy Conversion
- Dokumentacja: na stronie twórców
- Licencja: akademicka, darmowa (wymagana jest rejestracja)
- Strona domowa aplikacji: ORCA, FAccTs
Uwagi dotyczące uruchamiania pakietu:
- ORCA jest zainstalowana w ogólnym katalogu, ale dostęp aplikacji jest przydzielany dopiero po zaakceptowaniu warunków licencji (przynajmniej przez lidera grupy); w tym celu należy należy dokonać rejestracji na forum, a następnie przesłać nam kopię listu od ORCA Team z informacją o dokonaniu rejestracji i zgodzie na warunki licencji
Program ORCA generuje dużą liczbę plików tymczasowych i bardzo intensywnie korzysta z katalogu roboczego, dlatego sposób uruchamiania obliczeń ma duży wpływ na stabilność i wydajność pracy całego klastra.
W naszych, wewnętrznych testach dla cząsteczki benzenu zaobserwowaliśmy, że prowadzenie obliczeń w lokalnym tmpfs znacząco poprawia czas wykonania i ogranicza obciążenie współdzielonych zasobów dyskowych, a obliczenia powyżej 16 rdzeni praktycznie się nie skalują.
W związku z powyższym prosimy użytkowników programu ORCA o uruchamianie obliczeń zgodnie z poniższymi zasadami:
- Obliczenia z użyciem ORCA należy prowadzić na jednym nodzie.
- Katalogiem roboczym obliczeń powinien być lokalny tmpfs, czyli katalog /tmp na nodzie obliczeniowym.
- Po zakończeniu obliczeń należy skopiować potrzebne pliki wynikowe do katalogu projektu.
- W przypadku gdy lokalny tmpfs jest zbyt mały dla danego zadania, obliczenia możńa prowadzić na zasobach scratch.
- Należy deklarować sensowną liczby procesów/rdzeni która jest optymalna dla danego przypadku obliczeniowego.
Opis dostępnych przestrzeni dyskowych znajduje się tutaj: przestrzen-dyskowa
Na klastrze Tryton Plus nody CPU różnią się wyłącznie ilością pamięci RAM: 192 GB lub 384 GB. Dla obliczeń, przy których potrzebujemy większy /tmp, należy jawnie określić zapotrzebowanie na pamięć w skrypcie Slurm, np.:
#SBATCH --mem=380000M
Wtedy Slurm skieruje zadanie na node spełniający wymagania pamięciowe, co jest szczególnie istotne przy używaniu /tmp, ponieważ jego rozmiar jest powiązany z ilością RAM na nodzie. Przykładowy skrypt Slurm uruchamiający ORCA na 16 rdzeniach z katalogiem roboczym w tmpfs:
#!/bin/bash
#SBATCH --partition batch
#SBATCH --job-name=orca-tmpfs
#SBATCH -N 1
#SBATCH --ntasks-per-node=16
#SBATCH --time=24:00:00
set -euo pipefail
module load trytonp/orca
SUBMIT_DIR="${SLURM_SUBMIT_DIR:-$PWD}"
JOB_BASENAME="input"
WORK_DIR="/tmp/${USER}/orca-${SLURM_JOB_ID:-manual}-${JOB_BASENAME}"
mkdir -p "$WORK_DIR"
cp "$SUBMIT_DIR/${JOB_BASENAME}.inp" "$WORK_DIR/"
cd "$WORK_DIR"
"$ORCA_DIR/orca" "${JOB_BASENAME}.inp" > "${JOB_BASENAME}.out"
cp "${JOB_BASENAME}.out" "$SUBMIT_DIR/"
cp "${JOB_BASENAME}.gbw" "$SUBMIT_DIR/" 2>/dev/null || true
cp "${JOB_BASENAME}.xyz" "$SUBMIT_DIR/" 2>/dev/null || true
cp "${JOB_BASENAME}.hess" "$SUBMIT_DIR/" 2>/dev/null || true
cp "${JOB_BASENAME}.engrad" "$SUBMIT_DIR/" 2>/dev/null || true
rm -rf "$WORK_DIR"