Paralelisasi di VASP
Saya memiliki sistem yang memiliki 1 k-point, 54 atom NBANDS=152
, dan NGZ=80
. Saya menjalankan simulasi AIMD pada VASP versi 5.4.4
Superkomputer ini memiliki 32 core / node. Ini adalah cluster LINUX yang dihubungkan oleh Infiniband, mesin multicore modern. Saya bertanya-tanya apa cara terbaik untuk memilih parameter dan meminta sumber daya untuk mendapatkan penghitungan yang efisien dan cepat. Berikut beberapa skenario yang telah saya pertimbangkan. Saya ingin tahu apa yang akan menjadi metode "terbaik" (dalam hal efisiensi dan kecepatan).
- Berdasarkan apa yang saya baca di sini
- Saya harus meminta sesuatu seperti 19 band (152/8). Mungkin mengatur NBANDS = 160 untuk meminta 20 core genap.
- Apakah saya kemudian akan mengatur NCORE = 20 di file INCAR saya dan meminta 20 core pada 1 node?
- Atau akan lebih baik untuk mengatur NCORE = 10. Dan kemudian meminta sesuatu seperti 2 node dan 10 core per node? atau akankah itu membuat terlalu banyak overhead komunikasi dan memperlambat simulasi?
- Jika saya memutuskan untuk menggunakan # inti = # atom = 54
- Apakah saya akan menetapkan NCORE = 32, dan kemudian meminta 54 core lebih dari 2 node (32 di 1 node + 22 di detik)? Atau 9 core / node dan 6 node?
- Tidak bisakah saya meminta seluruh node? 1 node, 32 core
- jadi kemudian atur NCORE = 32 dan saya hanya meminta seluruh node. Namun manual VASP menyarankan hal ini karena itu akan membuat NPAR = 1
- ini sedikit membingungkan saya karena saya akan berasumsi 32 core pada satu node akan lebih efisien daripada memiliki core di beberapa node yang berkomunikasi satu sama lain
Jawaban
Sebagai seseorang yang telah melakukan banyak pembandingan untuk VASP, saya sarankan Anda mencoba pendekatan eksperimental. Saya yakin VASP akan menambahkan band tambahan untuk Anda jika perlu untuk paralelisasi, jadi saya tidak akan khawatir tentang itu secara pribadi. Tata letak node secara fisik (32 core pada 1 prosesor vs 16 core pada 2 prosesor vs layout prosesor AMD khusus pada satu CPU) dapat berbeda secara signifikan dari cluster ke cluster, Anda tidak dapat mengetahui apa yang optimal tanpa mencoba.
Karena Anda menjalankan simulasi MD tampaknya, saya pikir itu sangat berharga untuk melakukan benchmark setiap sistem sebelum Anda menjalankan simulasi yang panjang. Perubahan kecil tidak mengharuskan Anda untuk menandai ulang tetapi jika Anda beralih dari 50 menjadi 150 menjadi 300 atom, nilai ideal dapat berubah. Jalankan serangkaian kalkulasi cepat dengan seluruh rentang NCORE yang tampaknya masuk akal. Gunakan hasil terbaik. Saya cenderung memeriksa setiap faktor dari node terbesar.
Untuk 32 core, saya akan memeriksa NCORE = (1, 2, 4, 8, 16, 32). Saya akan mengatur waktunya terhadap 10 atau lebih langkah geometris. Ini mungkin tampak seperti membuang-buang waktu, tetapi mungkin akan menghemat banyak waktu di masa mendatang.
Saya hampir selalu menyarankan untuk meminta seluruh node kecuali Anda memiliki alasan yang kuat untuk tidak melakukannya. Anda mungkin akhirnya melihat opsi KPAR juga saat melihat-lihat, saya telah mendengar pendapat beragam. Saya pribadi tidak pernah mendapatkan hasil yang lebih baik dengan paralelisasi kpoint daripada tanpa itu. Ini mungkin membuat perbedaan memori.
Saya pikir saya akan memposting hasil benchmarking sesuai saran Tristan. Mungkin akan berguna bagi seseorang di masa depan. Saya hanya melakukan 10 langkah di MD (ukuran langkah 1 fs, total 10 fs).
Persen perbedaan semuanya relatif terhadap NCORE = 1 yang dijalankan dengan 32 core dan 1 node. Ada percepatan 33% dengan pergi ke 2 node dengan 64 core (NCORE = 32).
Jelas ini mungkin berbeda tergantung pada cluster Anda. Ngomong-ngomong, ini adalah cluster Graham di Sharcnet di Kanada - semoga bermanfaat bagi sesama orang Kanada di luar sana :)
