Pekerjaan Python pada kluster slurm, node vs core
Saya memiliki pertanyaan yang sangat mendasar, yang entah bagaimana tidak pernah berhasil saya temukan jawabannya. Mari berasumsi bahwa saya memiliki akses ke cluster yang menjalankan slurm, dan saya perlu menjalankan pekerjaan Python di cluster. Mari kita asumsikan bahwa kode saya belum ditulis untuk mendukung multiprocessing. Apakah saya punya alasan untuk membutuhkan banyak inti? Atau haruskah saya tetap berpegang pada 1 node dan 1 core?
Sebaliknya, jika saya ingin menjalankan 5 kali skrip yang sama (dengan variabel input yang berbeda misalnya), apakah ada perbedaan antara membutuhkan 1 node dan menetapkan 1 core untuk setiap pekerjaan, atau memerlukan 5 node dengan masing-masing 1 inti?
Jawaban
Jika skrip python Anda tidak menggunakan banyak utas, maka ya, Anda harus tetap menggunakan satu tugas ( -n1) dengan satu CPU ( -c1) pada satu node ( -N1). Anda tidak perlu menentukannya karena ini adalah default. Jika Anda meminta lebih banyak sumber daya, itu hanya akan sia-sia, karena Anda tidak menggunakannya.
Namun: Beberapa pustaka python untuk penghitungan multithread tanpa perlu menentukannya secara eksplisit, jadi jika Anda melakukan beberapa penghitungan numpy, Anda dapat memanfaatkan beberapa inti .
Sebaliknya, jika saya ingin menjalankan 5 kali skrip yang sama (dengan variabel input yang berbeda misalnya), apakah ada perbedaan antara membutuhkan 1 node dan menetapkan 1 core untuk setiap pekerjaan, atau memerlukan 5 node dengan masing-masing 1 inti?
Ya, ada: Jika Anda meminta Slurm untuk 5 Node dengan 1 tugas per node, maka itu harus menunggu sampai 5 node memiliki ruang untuk sebuah tugas. Meskipun misalnya sebuah node dengan 20 CPU benar-benar kosong, tugas Anda tidak akan berjalan, karena Anda secara eksplisit meminta 5 node. Jadi saya akan menyarankan untuk memulai 5 pekerjaan dengan -n1.