NAMD¶
Το NAMD (NAnoscale Molecular Dynamics) είναι μια εφαρμογή μοριακής δυναμικής υψηλών επιδόσεων, σχεδιασμένη για παράλληλη επεξεργασία. Αναπτύχθηκε από την Ομάδα Θεωρητικής και Υπολογιστικής Βιοφυσικής του Πανεπιστημίου του Illinois, με στόχο την προσομοίωση μεγάλων βιομοριακών συστημάτων. Διατίθεται δωρεάν ως λογισμικό ανοιχτού κώδικα και κλιμακώνεται αποδοτικά σε εκατοντάδες χιλιάδες πυρήνες, ενώ συχνά χρησιμοποιείται σε συνδυασμό με το VMD για την ανάλυση των αποτελεσμάτων.
Για περισσότερες πληροφορίες σχετικά με το λογισμικό, επισκεφθείτε την επίσημη ιστοσελίδα.
Σύνδεση στο Nefeli Cluster
Πριν από οποιαδήποτε ενέργεια, ο χρήστης πρέπει να έχει συνδεθεί επιτυχώς στο Nefeli cluster. Οι οδηγίες σύνδεσης παρέχονται στο ακόλουθο εγχειρίδιο.
NAMD nightly build version 3.0.2¶
Παράδειγμα χρήσης¶
Στο $HOME μας στο login node, δημιουργούμε ένα νέο φάκελο (έστω namd-test), μεταφερόμαστε εκεί και αντιγράφουμε τα κατάλληλα αρχεία (έστω της πρωτεΐνης bbl) καθώς και τον φάκελο toppar, ο οποίος περιέχει παραμέτρους τύπου Force Field CHARMM36. Όλα τα παραπάνω παρέχονται με την εγκατάσταση του λογισμικού στην κεντρική διαδρομή των εφαρμογώνκαι απαιτείται απλώς η μεταφορά τους στο working directory μας.
mkdir namd-test
cd namd-test
module load namd/gpu-3.0.2
cp $NAMD_EXAMPLES/bbl/topology/* .
cp -r $NAMD_EXAMPLES/../toppar .
Μέσα στο ίδιο working directory, δημιουργούμε και τοποθετούμε το αρχείο εισόδου μας, έστω namd-test.conf στο οποίο ορίζουμε τις παραμέτρους προσομοίωσης του συστήματος. Μερικές από αυτές μπορεί να είναι η θερμοκρασία, το χρονικό βήμα (timestep) καθώς και ο αριθμός των βημάτων για ελαχιστοποίηση ενέργειας (minimization).
Μέσα στο αρχείο εισόδου μας κρίνεται απαραίτητο να δηλώσουμε τις διαδρομές για τα αρχεία παραμέτρων (.prm και .str) που βρίσκονται στον φάκελο toppar.
Δημιουργούμε ή μεταφέρουμε το script για την υποβολή της εργασίας, (έστω namd-case.sh) το οποίο θα εκτελεστεί σε GPU node. O κώδικάς του, παρουσιάζεται αναλυτικά παρακάτω:
SLURM submission script
#!/bin/bash
#SBATCH --job-name=namd-GPU-Job
#SBATCH --partition=a100
#SBATCH --gres=gpu:1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --output=output.out
module load namd/gpu-3.0.2
namd3 +setcpuaffinity +p8 test.conf > test.log
Στη συνέχεια, υποβάλουμε την εργασία με την εντολή sbatch <filename.sh> ως εξής:
sbatch namd-case.sh
Παρακολουθούμε την εξέλιξη της εργασίας μέσω της εντολής squeue. Εφόσον η εργασία έχει εκκινήσει, μπορούμε να ελέγχουμε την πρόοδο της επίλυσης σε πραγματικό χρόνο:
tail -f test.log
Η επιτυχής ολοκλήρωση επιβεβαιώνεται από τη δημιουργία των αρχείων εξόδου (όπως το αρχείο τροχιάς .dcd) και από την παρουσία των τιμών ενέργειας ENERGY: στο αρχείο καταγραφής.
Terminal output
# grep "ENERGY:" test.log
Info: ABSOLUTE IMPRECISION IN FAST TABLE ENERGY: 1.69407e-21 AT 11.9974
Info: RELATIVE IMPRECISION IN FAST TABLE ENERGY: 1.13046e-16 AT 11.9974
ENERGY: 0 140.1681 371.6800 356.7853 24.7048 -47678.4135 4292.1724 0.0000 0.0000 0.0000 -42492.9028 0.0000 -42492.9028 -42492.9028 0.0000
ENERGY: 1 166.2011 285.4899 347.8530 11.8055 -48062.3845 4119.4419 0.0000 0.0000 0.0000 -43131.5931 0.0000 -43131.5931 -43131.5931 0.0000
ENERGY: 2 811.0992 411.8933 349.3284 14.8386 -48414.5188 3977.2489 0.0000 0.0000 0.0000 -42850.1103 0.0000 -42850.1103 -42850.1103 0.0000
... ... ... ...
ENERGY: 100 56.7688 175.5095 304.3876 7.8865 -57516.1192 5456.5350 0.0000 0.0000 3006.9770 -48508.0548 112.6213 -51515.0318 -48505.5806 106.2274