1. Giriş
Son güncelleme tarihi: 25.04.2022
Oluşturacağınız nedir?
Bu codelab'de Google Cloud üzerinde otomatik ölçeklendirmeli Yüksek Performanslı Bilişim (HPC) kümesi dağıtacaksınız.Terraform dağıtımı, bu kümeyi Spack aracılığıyla yüklenen Gromacs ile oluşturur. Küme, Slurm iş planlayıcısıyla yönetilir. Küme oluşturulduğunda benchMEM, benchPEP veya karşılaştırmalı değerlendirmeleri çalıştırırsınız.
Neler öğreneceksiniz?
- Slurm iş planlayıcısını destekleyen HPC kümesi dağıtma
- Slurm toplu işi kullanarak Google Cloud'da Gromacs ile GPU hızlandırmalı moleküler dinamik simülasyonları çalıştırma
Gerekenler
2. Kurulum
Bu codelab'i tamamlamak için Compute Engine ve Cloud Build API'lerini etkinleştirmeniz gerekir. Compute Engine ve Cloud Build API'lerini etkinleştirmek için Cloud Shell'inizi açın ve aşağıdaki komutları çalıştırın. Proje kimliğinizi aşağıdaki
ile değiştirmeyi unutmayın.
gcloud config set project <PROJECT_ID> gcloud services enable compute.googleapis.com gcloud services enable cloudbuild.googleapis.com
Dikkat: Kümenize bağlanmak için üçüncü taraf SSH (ör. OpenSSH) kullanmayı planlıyorsanız OS Girişi'ni kullanarak bulut kimliği profilinize bir ssh anahtarı eklediğinizden emin olun. Cloud Identity profilinize SSH anahtarları ekleme hakkında daha fazla bilgi edinin.
3. [İSTEĞE BAĞLI] Gromacs ile GCP Sanal Makine Görüntüsü oluşturma
Derleme işleminin Gromacs'ı ve tüm bağımlılarını yüklemesi 2 saati bulabileceğinden, bu codelab'de sizin için önceden oluşturulmuş bir görüntü sağladık. Biraz zaman kazanmak için bu önceden oluşturulmuş görüntüyü kullanmak istiyorsanız bir sonraki bölüme atlayabilirsiniz.
Google Cloud'da araştırma uygulamaları çalıştırırken uygulamanızı yüklemek ve dağıtmak için yararlanabileceğiniz birçok seçenek vardır. Codelab'in bu bölümünde, slurm-gcp (CentOS7) sanal makine görüntüsünün üstünde oluşturulan bir sanal makine görüntüsü oluşturacaksınız. Oluşturma işlemi sırasında derleyici, tüm Gromacs' ve Gromacs yüklenecektir.
RCC Apps deposundaki Gromacs Cloud Build ardışık düzeni, Gromacs'i yüklemek için gerekli talimatları içerir. Yükleme işlemi, Spack'i yükleyen bir sanal makine dağıtmak için Packer'i kullanır. Bu sanal makine de GCC@9.2.0 derleyiciyi ve GPU hızlandırma etkin şekilde Gromacs@2021.2'yi yükler.
- GCP'de Cloud Shell'inizi açın.
- FluidNumerics/rcc-apps deposunu klonlama
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- Google Cloud Build'i kullanarak görüntüyü derleyin.
cd rcc-apps gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async
Derleme sürecinizin durumunu Google Cloud Build kontrol panelinden kontrol edebilirsiniz
Derleme işlemi iki saat sürebilir. Bu süreci hızlandırmak için derleme yapılandırma dosyası şemanızda değişiklik yaparak makine türünü değiştirerek derleme performansını artırabilirsiniz. Bu işlem, _MACHINE_TYPE derleme değişkeni kullanılarak yapılabilir. Örneğin:
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async --substitutions=_MACHINE_TYPE=n2-standard-64
Derlemeniz tamamlandıktan sonra Google Cloud projenizde kümenizi dağıtmak için kullanabileceğiniz bir sanal makine görüntüsü olacak.
4. Terraform ile otomatik ölçeklendirmeli HPC kümesi dağıtma
Bu bölümde, Slurm iş planlayıcı yüklüyken otomatik ölçeklendirmeli bir HPC kümesi dağıtmak için Terraform'u kullanacaksınız. Bu küme, her biri 8 vCPU ve 1 Nvidia® Tesla V100 GPU'ya sahip işlem düğümleriyle dağıtılacaktır.
- GCP'de Cloud Shell'inizi açın.
- FluidNumerics/rcc-apps deposunu klonlama
cd ~ git clone https://github.com/FluidNumerics/rcc-apps.git
- gromacs terraform dizinine geçin:
cd ~/rcc-apps/gromacs/tf/slurm
- Bir Terraform planı oluşturup inceleyin. Kümenizin adını, GCP projenizi ve dağıtım yapmak istediğiniz alt bölgeyi belirtmek için
GMX_NAME
,GMX_PROJECT
veGMX_ZONE
ortam değişkenlerini ayarlayın. Emin değilseniz lütfen aşağıdaki notu inceleyin
export GMX_PROJECT=<PROJECT_ID> export GMX_ZONE=<ZONE> export GMX_NAME="gromacs"
- Bu codelab'in önceki bölümünde kendi sanal makine görüntünüzü oluşturduysanız GMX_IMAGE ortam değişkenini de ayarlamanız gerekir.
disa aktarma GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss- bilgiler
terraform init && terraform plan
komutunu çalıştıracak "make" komutunu kullanarak planı oluşturun.
make plan
- Kümeyi dağıtın. Gromacs ve bağımlılıkları kümenize önceden yüklenmiş olarak geldiğinden kurulum işlemi yalnızca birkaç dakika sürer.
make apply
- Önceki adımda oluşturulan login düğümüne SSH uygulayın. Bu düğümü önceki adımda görebilirsiniz (muhtemelen gromacs-login0 olarak adlandırılır). Bu işlemi konsol menü öğesindeki Compute Engine -> Sanal Makine Örnekleri listesinin yanında bulunan SSH düğmesini tıklayarak yapabilirsiniz. sanal makine örneğidir.
Seçenek: Bu gcloud komutu çifti, giriş düğümü adını ve SSH'yi buna göre çözer:
export CLUSTER_LOGIN_NODE=$(gcloud compute instances list --zones ${GMX_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1) gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${GMX_ZONE}
- Giriş düğümüne bağlandıktan sonra küme kurulumunuzu doğrulamak için Gromacs'ın yüklü olup olmadığını kontrol edin.
$ spack find gromacs ==> In environment /apps/spack-pkg-env ==> Root specs gromacs@2021.2 +cuda~mpi ==> 1 installed package -- linux-centos7-x86_64 / gcc@9.2.0 ----------------------------- gromacs@2021.2
/opt/share/gromacs
sitesinin aşağıda listelenen içeriğe sahip olduğunu doğrulayın.
$ ls /opt/share/gromacs/ benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr
5. BenchRIB Karşılaştırmasını çalıştır
Gromacs, minimum enerji kısıtlamaları altında moleküler dinamikleri simüle etmek ve moleküler yapıları hesaplamak için kullanılan bir araştırma yazılımıdır. Bu codelab için sanal makine görüntüsünde sağlanan karşılaştırmalar, moleküler dinamiklere, yani atom sistemlerinin evrimine odaklanmaktadır.
Moleküler dinamiklerde atomların konumları, hızları ve ivmeleri Newton'un hareket yasaları kullanılarak simüle edilir :
Burada , i atomunun konumu, t zaman,
i atomunun kütlesi;
ise j atomundan dolayı i atomu üzerinde bağlanmamış kuvvettir.
ise bağlı etkileşimlerden kaynaklanan kuvvetlerdir. Sıcaklık, basınç, atom konumları ve atom hızları dikkate alınarak güçler hesaplanıp sistem, yeni atom hızları ve konumları elde edecek şekilde sayısal olarak entegre edilir. Bu işlem, belirli bir süre boyunca moleküler dinamiklerin simülasyonunu yapmak için tekrarlanır.
Gromacs görseli (sizin oluşturduğunuz veya sağladığınız) üç karşılaştırmayla birlikte gelir
- benchMEM
- benchRIB
- benchPEP
Bu karşılaştırmalar, Dr. Kutzner'ın Free Gromacs Karşılaştırmaları seti, geçici moleküler dinamik simülasyonlarından oluşan standart bir settir. Her karşılaştırma değeri, atom sayısı ve simülasyonun süresi açısından değişiklik gösterir. Her simülasyonla ilgili yapılandırmalar aşağıdaki tabloda verilmiştir.
Metrik / Karşılaştırma | benchMEM | benchRIB | benchPEP |
Atom Sayısı | 81.743 | 2.136.412 | 12.495.503 |
Sistem Boyutu / nm | 10,8 x 10,2 x 9,6 | 31,2 x 31,2 x 31,2 | 50,0 x 50,0 x 50,0 |
Zaman Adımı / fs | 2 | 4 | 2 |
Kesme Yarıçapı / nm | 1 | 1 | 1.2 |
PME ızgara aralığı / nm | 0,12 | 0,135 | 0,16 |
Karşılaştırmayı çalıştırmak için bir Slurm toplu işi göndermeniz gerekir. Varsayılan olarak, sağlanan toplu komut dosyası, karşılaştırmalı değerlendirmeyi çalıştırır. Sağlanan karşılaştırmalar için yapılandırmaları tanımlayan giriş grupları, /opt/share/gromacs
altındaki Gromacs sanal makine görüntüsüne dahil edilir. Ayrıca, /opt/share
altında Gromacs çalıştırmak için örnek bir bash komut dosyası mevcuttur.
Bu bölümde, kümenin login düğümüne SSH kullanmanız gerekir
- Sbatch komutunu kullanarak toplu iş gönderme
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh
Bu işlem, işi yürütme için sıraya alır ve Slurm sizin için bir işlem düğümü sağlar. sinfo
öğesini çalıştırdığınızda bir işlem düğümünün alloc#
durumunda olduğunu görürsünüz. Bu, işlem düğümünün işinize ayrılmış ancak temel hazırlık sürecinde olduğunu gösterir. İşiniz çalışmaya başladıktan sonra, düğüm alloc
durumuna ayarlanır.
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST gromacs* up infinite 1 alloc# gromacs-compute-0-0 $ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 gromacs gromacs_ joe R 0:02 1 gromacs-compute-0-0 $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST gromacs* up infinite 1 alloc gromacs-compute-0-0
İşin tamamlanmasını bekleyin. Varsayılan karşılaştırma (benchRIB), yaklaşık 8 milyon atomu simüle eder ve 5.000 zaman adımı (4 zaman adımı/fs ile) çalıştıracak ve tamamlanması yaklaşık 6 dakika sürecek şekilde yapılandırılmıştır. Şu komutla işinizin durumunu izleyebilirsiniz:
watch squeue
İşiniz sıradan kaldırıldığında ctrl-C tuşlarına basarak çıkış yapabilirsiniz.
- İş tamamlandığında, simülasyon çıkışını (
run/MEM
altında) içerenrun/
adında bir dizin ve geçerli dizininizdegromacs.out
adlı bir günlük dosyası görürsünüz.run/MEM
dizini,ener.edr
vemd.log
adlı iki dosya içerir.ener.edr
dosyası sistemin enerjilerini, sıcaklığını, basıncını, kutu boyutunu, yoğunluğunu ve sanal verilerini taşınabilir bir ikili biçimde depolar. Uzantının önerdiği gibi,md.log
dosyası Gromacs simülasyonuna ait günlükleri, ayrıca parçacık ve PME çözücülerinden alınan bilgileri günlüğe kaydetmenin yanı sıra simülasyon performansı hakkında bilgiler içerir. gromacs.out dosyasının içeriği, aşağıda gösterilene benzer bir şekildegmx mdrun
hizmetinden standart çıkış içerir.
$ tail -n9 gromacs.out step 5000, remaining wall clock time: 0 s Core t (s) Wall t (s) (%) Time: 3085.342 385.683 800.0 (ns/day) (hour/ns) Performance: 4.481 5.356 GROMACS reminds you: "I never thought of stopping, and I just hated sleeping. I can't imagine having a better life." (Barbara McClintock) OK
6. Tebrikler
Bu codelab'de, otomatik ölçeklendirmeli, bulutta yerel bir HPC kümesi oluşturdunuz ve Google Cloud'da Gromacs ile GPU ile hızlandırılmış moleküler dinamikler simülasyonu çalıştırdınız.
Temizleme
Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla:
ÖNERİLİR: HPC kümesini Terraform ile silin
- Cloud Shell'inizi açın ve
gromacs/tf/slurm
örnek dizinine gidin
cd ~/rcc-apps/gromacs/tf/slurm
- Tüm kaynakları silmek için yap kaldırma komutunu çalıştırın.
make destroy
VEYA, Projeyi silin (en etkili ve yıkıcı)
Faturalandırmayı ortadan kaldırmanın en kolay yolu, codelab için oluşturduğunuz projeyi silmektir.
Dikkat: Bir projeyi silmenin aşağıdaki etkileri vardır:
- Projedeki her şey silinir. Bu codelab için mevcut bir projeyi kullandıysanız bu projeyi sildiğinizde, projede yaptığınız diğer çalışmaları da silmiş olursunuz.
- Özel proje kimlikleri kaybolur. Bu projeyi oluştururken, gelecekte kullanmak istediğiniz özel bir proje kimliği oluşturmuş olabilirsiniz. Proje kimliğini kullanan URL'leri (ör. appspot.com URL'si) korumak için projenin tamamını silmek yerine proje içindeki seçili kaynakları silin.
Birden fazla codelab'i ve hızlı başlangıç kılavuzunu keşfetmeyi planlıyorsanız projeleri yeniden kullanarak proje kota sınırlarını aşmaktan kaçınabilirsiniz.
- Cloud Console'da Kaynakları yönetin sayfasına gidin. Kaynakları yönetin sayfasına gidin
- Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil
simgesini tıklayın.
- İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.