VASP'de paralelleştirme
1 k-noktası, 54 atom içeren bir sistemim var NBANDS=152ve NGZ=80. VASP 5.4.4 sürümünde bir AIMD simülasyonu çalıştırıyorum
Süper bilgisayarın 32 çekirdeği / düğümü vardır. Modern çok çekirdekli makine olan Infiniband tarafından bağlanan bir LINUX kümesi. Verimli ve hızlı bir hesaplama elde etmek için parametreleri seçmenin ve kaynak talep etmenin en iyi yolunun ne olacağını merak ediyordum. İşte düşündüğüm bazı senaryolar. "En iyi" yöntemin ne olacağını merak ediyorum (verimlilik ve hız açısından).
- Burada okuduğuma göre
- 19 grup gibi bir şey istemeliyim (152/8). Hatta 20 çekirdek istemek için NBANDS = 160 olarak ayarlayın.
- Daha sonra INCAR dosyamda NCORE = 20 ayarlayıp 1 düğümde 20 çekirdek ister miyim?
- Veya NCORE = 10 olarak ayarlamak daha mı iyi olur? Ve sonra 2 düğüm ve düğüm başına 10 çekirdek gibi bir şey mi istersiniz? yoksa bu çok fazla iletişim yükü yaratır ve simülasyonu yavaşlatır mı?
- Çekirdek sayısı = atom sayısı = 54 kullanmaya karar verirsem
- NCORE = 32 ayarlayıp 2 düğüm üzerinden 54 çekirdek ister miyim (1 düğümde 32 + saniyede 22)? Veya 9 çekirdek / düğüm ve 6 düğüm?
- Tüm düğümü talep edemez miyim? 1 düğüm, 32 çekirdek
- bu yüzden NCORE = 32'yi ayarlayın ve tüm düğümü talep ediyorum. Ancak VASP kılavuzu buna karşı çıkmaktadır çünkü bu NPAR = 1 yapacaktır.
- bu biraz kafamı karıştırıyor çünkü bir düğümde 32 çekirdeğin birbiriyle iletişim kuran birkaç düğümde çekirdeklere sahip olmaktan daha verimli olacağını varsayardım
Yanıtlar
VASP için çok fazla kıyaslama yapmış biri olarak, deneysel yaklaşımı denemenizi öneririm. Paralelleştirme gerektiğinde VASP'nin sizin için ek bantlar ekleyeceğine inanıyorum, bu yüzden kişisel olarak bu konuda endişelenmem. Düğümün fiziksel olarak düzeni (1 işlemcide 32 çekirdek, 2 işlemcide 16 çekirdek ve tek bir CPU üzerinde özel AMD işlemci düzenleri) kümeden kümeye önemli ölçüde farklılık gösterebilir, denemeden neyin en uygun olduğunu bilemezsiniz.
Görünüşe göre MD simülasyonları çalıştırdığınız için, uzun bir simülasyon çalıştırmadan önce her sistemi karşılaştırmanın buna değer olduğunu düşünüyorum. Küçük değişiklikler yeniden işaretlemenizi gerektirmez, ancak 50 ila 150 ila 300 atom arasında giderseniz ideal olan değişebilir. Makul görünen tüm NCORE yelpazesiyle bir dizi hızlı hesaplama yapın. En iyi sonucu kullanın. En büyük düğümün her faktörünü kontrol etme eğilimindeyim.
32 çekirdek için NCORE = (1, 2, 4, 8, 16, 32) kontrol ederdim. Onu 10 veya daha fazla geometrik adımla zamanlardım. Bu zaman kaybı gibi görünebilir, ancak gelecekte büyük miktarlarda zaman tasarrufu sağlayabilir.
Bunu yapmamak için iyi bir nedeniniz olmadıkça neredeyse her zaman tüm düğümleri istemenizi öneririm. Sonunda etrafa bakarken bir KPAR seçeneği de görebilirsiniz, karışık görüşler duydum. Şahsen kpoint paralelleştirme ile onsuz olduğundan daha iyi bir sonuç alamadım. Yine de bir hafıza farkı yaratabilir.
Tristan'ın önerisine göre kıyaslamanın sonuçlarını yayınlayacağımı düşündüm. Belki ileride birisi için faydalı olacaktır. MD'de sadece 10 adım yaptım (1 fs adım boyutu, toplam 10 fs).
Yüzde farkların tümü, 32 çekirdek ve 1 düğüm ile NCORE = 1 çalıştırma ile ilişkilidir. 64 çekirdekli (NCORE = 32) 2 düğüme giderek% 33 hızlanma var.
Açıkçası bu, kümenize bağlı olarak değişebilir. Bu arada, Kanada'daki Sharcnet'teki Graham kümesi - umarım dışarıdaki Kanadalılar için yararlıdır :)