infistream

Eksekusi aplikasi paralel

Eksekusi aplikasi paralel. Mempertimbangkan situasi di mana sejumlah besar simulasi membutuhkan penggunaan sebuah klaster kinerja tinggi. Untuk contoh ini, semua kasus simulasi akan didekomposisi menjadi sub-domain yang berbeda dan disimpan dalam direktori bernama simulasi. Direktori simulasi akan ditempatkan sebagai sub-direktori dari direktori $FOAM_RUN. Alih-alih memulai setiap simulasi secara manual, lebih baik untuk mengotomatisasi proses ini sebanyak mungkin. Untuk tujuan ini, sebuah skrip shell dapat diprogram dengan langkah-langkah berikut:

1. Dapatkan nama solver dari controlDict.

2. Dapatkan jumlah sub-domain dari decomposeParDict.

3. Jalankan perintah mpirun dengan jumlah prosesor yang benar.

Dalam contoh ini, skrip dinamai Allparrun dan disimpan dalam direktori simulasi. Sebagai langkah pertama, beberapa baris harus ditambahkan ke awal skrip. Kode serupa dapat ditemukan dalam sebagian besar tutorial yang didistribusikan bersama rilis OpenFOAM:
The function getApplication adalah fungsi bash yang ada di OpenFOAM dan cocok untuk contoh ini karena nama aplikasi akan menjadi nama solver dalam kasus ini.

Selanjutnya, semua sub-direktori kasus dalam direktori simulasi harus ditemukan. Diasumsikan bahwa direktori-direktori tersebut adalah kasus simulasi OpenFOAM yang tepat. Sebagai konsekuensinya, sebuah simulasi OpenFOAM akan dimulai di setiap sub-direktori dari direktori simulasi. Perintah find digunakan untuk mencari khusus direktori yang dapat ditemukan.
di $FOAM_RUN/simulasi (lihat daftar 9). Baris-baris di atas mencari direktori yang terletak secara langsung (tidak rekursif) di direktori $FOAM_RUN sehingga tindakan yang sama dapat dilakukan pada setiap kasus ini nanti. Perintah find dapat dengan mudah ditingkatkan dengan misalnya memfilter nama direktori tertentu menggunakan wildcard, tetapi untuk keperluan kesederhanaan diasumsikan dalam contoh ini bahwa direktori simulasi hanya berisi kasus OpenFOAM.

Langkah berikutnya adalah mengambil jumlah sub-domain dari system/controlDict dan menyimpannya dalam variabel untuk digunakan nanti. Untuk tujuan ini, fungsi baru diperkenalkan ke dalam skrip Allparrun yang disebut nProcs yang mengembalikan jumlah sub-domain.
Fungsi memanggil program grep untuk memfilter baris dalam system/decomposeParDict yang berisi numberOfSubdomains. Pada baris ini, string 'numberOfSubdomains' dihapus, spasi kosong di antara kata kunci ini dan nilai numerik aktual dihapus, dan titik koma dihapus. Hasil dari rangkaian perintah ini disimpan dalam variabel bash n. Untuk mengembalikannya, echo digunakan.

Menjalankan solver atau utilitas OpenFOAM secara paralel dilakukan menggunakan perintah mpirun. Untuk contoh ini, ini berarti bahwa dua variabel perlu disampaikan ke mpirun sebagai argumen opsi: nama solver, dan jumlah prosesor. Skrip Allparrun yang sudah selesai ditunjukkan dalam daftar 10.

Untuk kasus yang paling sederhana, di mana sistem antrian dan pengiriman pekerjaan tidak tersedia, Anda hanya perlu menyediakan berkas mesin ke mpirun. Berkas mesin berisi entah alamat IP atau nama host dari node komputasi pada jaringan klaster HPC. Silakan lihat yang sesuai.
INGAT

bahwa dalam kasus ini panggilan ke mpirun akan memulai semua pekerjaan sebagai pekerjaan lokal pada mesin. Untuk memulainya pada klaster HPC dan menggunakan node komputasinya, langkah-langkah lain diperlukan yang bergantung pada konfigurasi klaster spesifik dan oleh karena itu diabaikan di sini.

Anda dapat merujuk ke panduan pengguna yang disediakan oleh tim administrasi klaster HPC Anda untuk informasi lebih lanjut tentang topik ini.
Open chat
Infichat
Hello 👋
Thank you for text me
Can we help you?