Menginstal OpenFOAM pada cluster HPC
INFO
HPC for CFD. Hubungi administrator sistem klaster HPC untuk memastikan Anda membangun OpenFOAM dengan benar.
Dalam bagian HPC for CFD ini, beberapa topik dipertimbangkan ketika mencoba menginstal OpenFOAM di sebuah klaster HPC. Ketika bekerja di klaster jarak jauh, diharapkan ada sistem baru yang terdiri dari perangkat keras yang berbeda, perpustakaan perangkat lunak, dan versi kompilator yang berbeda. Karena perbedaan ini, setiap sistem akan berbeda dan mungkin memiliki tantangan khusus untuk instalasi. Dengan demikian, bagian ini akan mencoba menguraikan beberapa masalah umum yang mungkin Anda hadapi di sistem apa pun daripada mencakup detail spesifik sistem. Lanjutannya diasumsikan bahwa pembaca memiliki beberapa pengalaman dalam menjalankan kompilator dan mengatur konfigurasinya serta menggunakan variabel lingkungan sistem Linux. Ini termasuk menghubungkan folder include dan biner pustaka ke dalam proses kompilasi.
Disarankan untuk menggunakan perpustakaan MPI yang tersedia di klaster HPC, karena mereka dibangun dengan cermat oleh administrator klaster untuk memaksimalkan kinerja pada mesin tertentu tersebut. Jika mengompilasi terhadap perpustakaan OpenMPI yang disertakan dalam folder ThirdParty yang disertakan dengan OpenFOAM, solver mungkin masih dapat berfungsi tetapi tanpa optimisasi paralel yang signifikan dan dukungan antarmuka. Hal ini dapat sangat menghambat kecepatan dan skalabilitas paralel dan tidak dianjurkan.
Tanpa kompilasi MPI yang berfungsi sepenuhnya, perpustakaan Pstream OpenFOAM tidak akan terkompilasi dengan benar. Perpustakaan Pstream berfungsi sebagai antarmuka antara perpustakaan CFD dan fungsi MPI mentah, yang diperlukan untuk perhitungan paralel apa pun.
Setiap klaster biasanya akan memiliki compiler yang didukung secara resmi untuk digunakan pada sistem tersebut. Ini bisa menjadi compiler sumber terbuka seperti Gcc, tetapi juga bisa menjadi compiler C++ komersial yang telah dikonfigurasi sebelumnya seperti Icc, yang ditawarkan oleh Intel®. Untuk memilih compiler untuk OpenFOAM, file konfigurasi utama $WM_PROJECT_DIR/etc/bashrc harus disesuaikan. Bagian dari file yang menyangkut pemilihan compiler ditunjukkan dalam listing 2.
Opsi pertama, Lokasi Compiler, menentukan apakah compiler sistem digunakan atau compiler yang disertakan dengan OpenFOAM dalam direktori ThirdParty digunakan oleh wmake dalam aktivitas kompilasi apa pun. Dalam kasus instalasi HPC, compiler sistem harus selalu digunakan. Opsi lainnya akan menetapkan compiler mana yang akan digunakan. Ada banyak opsi yang tersedia, tetapi mungkin tidak semuanya terinstal di sistem yang bersangkutan. Sebagai contoh, banyak klaster komputasi berbasis Linux akan memiliki Gcc terinstal di suatu tempat pada sistem, tetapi compiler yang direkomendasikan mungkin merupakan versi Icc yang sangat dioptimalkan dan disesuaikan. Dalam kasus ini, compiler harus didefinisikan sebagai:
Compiler HPC For CFD
Seperti halnya dengan compiler, wmake perlu dikonfigurasi untuk dibangun melawan implementasi MPI yang didukung yang khusus untuk sistem HPC. Hal ini dilakukan dalam file bashrc yang sama seperti pemilihan compiler (lihat listing 3). Bergantung pada implementasi yang dipilih, OpenFOAM menetapkan lokasi target yang berbeda untuk MPI_ARCH_PATH dan MPI_HOME, yang dimaksudkan untuk menjadi lokasi pada sistem file klaster di mana eksekutor mpi, perpustakaan, dan berkas header ini ada. Salah satu masalah yang paling umum dengan instalasi HPC adalah bahwa direktori ini tidak diatur dengan benar dan perpustakaan Pstream tidak dikompilasi dengan benar karena kurangnya perpustakaan dan header MPI.
Dalam kasus ini, pengaturan WM_MPILIB=OPENMPI akan menginstruksikan wmake untuk menggunakan versi OpenMPI yang dikemas dengan direktori ThirdParty. Jika SYSTEMOPENMPI diatur sebagai gantinya, skrip akan mencari untuk memuat perpustakaan OpenMPI dari sistem. Skrip yang mendefinisikan variabel lingkungan ini tergantung pada pilihan, berlokasi di $WM_PROJECT_DIR/etc/- config/settings.sh, di bawah subbagian Pustaka Komunikasi.
Di sana variabel lingkungan MPI_ARCH_PATH dan MPI_HOME diatur. Sayangnya, cara variabel tersebut diatur mungkin tidak cocok untuk konfigurasi spesifik dari klaster tersebut. Sebagai contoh, memilih HPMPI sebagai perpustakaan MPI, skrip akan mencoba untuk memuat direktori spesifik (sekitar baris 463):
Penjelasan HPC For CFD
Jika lokasi folder hpmpi tidak tepat /opt/hpmpi, MPI_HOME tidak akan diatur dengan benar dan kesalahan akan menyebar ke seluruh skrip dan pada akhirnya mengganggu kompilasi. Untungnya, mengatur variabel ini secara manual cukup mudah, asalkan lokasi implementasi MPI target di pohon direktori sistem diketahui.
Misalkan klaster ini mendukung implementasi MPI tertentu yang spesifik, fiktif, yang disebut Super-Scaling MPI, atau ssmpi singkatnya. Pustaka fiktif ini, versi 1.3, dapat ditemukan dalam struktur direktori /opt/apps/ssmpi/1.3. Karena skrip tidak akan tahu cara mengonfigurasi wmake untuk menghubungkan ke ini, variabel lingkungan mpi harus didefinisikan secara manual di $HOME/.bashrc (lihat listing 4). Variabel tersebut diatur sesuai setelah bashrc OpenFOAM dipanggil untuk memastikan nilai yang dimuat secara tidak benar ditimpa. Pentingnya memiliki variabel lingkungan ini terdefinisi jelas saat melihat aturan wmake untuk menetapkan bendera kompiler MPI (lihat listing 5).
Dalam file konfigurasi untuk kompilasi dengan OpenMPI, variabel ini digunakan untuk menetapkan jalur ke lokasi header dan biner. Jika sebuah instalasi diatur dengan kode SSMPI fiktif, file konfigurasi baru akan dibuat, mengikuti konvensi penamaan ini dan diisi dengan jalur file yang sesuai. Pada akhirnya, semua pengaturan ini bertujuan untuk memastikan bahwa perpustakaan Pstream dikompilasi dengan benar dan dihubungkan ke implementasi MPI lokal. Opsi kompilasi Pstream, yang disimpan di $WM_PROJECT_DIR/src/Pstream/mpi/Make/options, berisi PFLAGS, PINC, dan PLIBS yang disalurkan langsung ke bendera kompiler melalui -I dan -L. Ini akan digunakan pada saat kompilasi untuk penautan header dan pustaka. Di luar berinteraksi dengan perpustakaan MPI, OpenFOAM sebagian besar mandiri dan hanya memiliki sedikit dependensi perpustakaan eksternal lainnya. Sayangnya, sejumlah masalah dan kesalahan bisa terjadi selama proses kompilasi pada sistem apa pun.
Seringkali, mencapai kompilasi yang berhasil akan memerlukan pengguna untuk mengandalkan pengalaman pribadi yang diperoleh dari penggunaan kompiler serta bekerja dalam berbagai lingkungan sistem operasi yang berbeda. Untungnya, dengan meningkatnya basis pengguna OpenFOAM, banyak sistem baru yang mulai beroperasi dengan versi lokal yang telah diinstal dan dikonfigurasi sebelumnya. Jika seorang pengguna memiliki pengalaman yang relatif sedikit dalam menggunakan kompiler dan memerlukan klaster HPC untuk digunakan dengan OpenFOAM, mungkin ide bagus untuk secara khusus mencari sistem dengan paket yang sudah dikonfigurasi.