Prosedur Build dengan CMake¶
Halaman ini menjelaskan prosedur mulai dari memperoleh kode sumber FrontISTR hingga build dan instalasi. Untuk rincian pustaka dependensi, lihat Pustaka Dependensi Wajib dan Opsional.
Memperoleh Kode Sumber¶
Kode sumber FrontISTR dapat diperoleh dari GitLab atau GitHub.
# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git
# GitHub (mirror)
git clone https://github.com/FrontISTR/FrontISTR.git
Prosedur Build¶
FrontISTR mengasumsikan build out-of-source (build langsung di dalam pohon kode sumber dilarang). Buat direktori build dan jalankan cmake di dalamnya.
cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)
Setelah build, program dapat dijalankan langsung sebagai /path/to/FrontISTR/build/fistr1/fistr1. Untuk menginstalnya ke path sistem (CMAKE_INSTALL_PREFIX), jalankan juga perintah berikut.
Daftar Opsi CMake¶
Opsi yang bertuliskan "ON jika terdeteksi" diaktifkan secara otomatis ketika pustaka terkait ditemukan pada sistem saat cmake dijalankan. Opsi tersebut dapat dinonaktifkan dengan menentukan -DWITH_XXX=OFF secara eksplisit.
| Opsi | Bawaan | Deskripsi |
|---|---|---|
WITH_MPI | ON | Mengaktifkan paralelisme MPI |
WITH_OPENMP | ON jika terdeteksi | Mengaktifkan paralelisme thread OpenMP |
WITH_METIS | ON jika terdeteksi | Mengaktifkan dekomposisi domain menggunakan METIS |
WITH_MUMPS | ON jika terdeteksi | Mengaktifkan solver langsung paralel MUMPS |
WITH_MKL | ON jika terdeteksi | Mengaktifkan Intel MKL (termasuk PARDISO) |
WITH_LAPACK | ON jika terdeteksi | Mengaktifkan BLAS dan LAPACK. Diperlukan untuk prapengkondisian SA-AMG, kompresi BLR pada DIRECTmf, dan estimasi bilangan kondisi |
WITH_ML | ON jika terdeteksi | Mengaktifkan prapengkondisian AMG menggunakan Trilinos ML |
WITH_REFINER | ON jika terdeteksi | Mengaktifkan refinement mesh menggunakan REVOCAP_Refiner |
WITH_REVOCAP | ON jika terdeteksi | Mengaktifkan analisis terkopel menggunakan REVOCAP_Coupler |
WITH_TOOLS | ON | Membangun kumpulan alat bawaan |
WITH_DOC | OFF | Menghasilkan dokumentasi API dengan Doxygen |
WITH_NETCDF | ON jika terdeteksi | Mengaktifkan output format Exodus II (NetCDF) |
WINDOWS | OFF | Mengaktifkan build untuk Windows |
CMAKE_BUILD_TYPE | RELEASE | Jenis build (RELEASE / DEBUG) |
CMAKE_INSTALL_PREFIX | /usr/local | Direktori instalasi |
DEBUG_EXTRA | OFF | Mengaktifkan pemeriksaan kebocoran memori (untuk GCC, -fsanitize=address) |
NVHPC_NO_ACC | OFF | Menonaktifkan OpenACC dan membangun versi CPU saat menggunakan compiler NVIDIA HPC SDK |
ARCH | GENERIC | Arsitektur komputer target build (GENERIC / FX64 / SXAT) |
Build DEBUG¶
Jika CMAKE_BUILD_TYPE=DEBUG ditentukan, flag debug berikut ditambahkan sesuai compiler.
| Compiler | Flag tambahan |
|---|---|
| GCC | -fbounds-check -fbacktrace |
| Intel | -check uninit,bound -traceback |
Saat Menggunakan MKL pada Build MPI¶
Untuk menggunakan solver langsung paralel MKL (Cluster PARDISO) pada build MPI, pustaka BLACS MKL yang sesuai dengan implementasi MPI yang digunakan harus di-link. cmake menjalankan program MPI kecil untuk menentukan implementasi MPI, lalu mencari dan meng-link mkl_blacs_openmpi_lp64 untuk Open MPI, atau mkl_blacs_intelmpi_lp64 untuk Intel MPI atau MPICH. Jika tidak ditemukan, cmake mengeluarkan pesan yang diawali MKL BLACS was not found..
Pada lingkungan di mana program MPI tidak dapat dijalankan langsung, seperti login node pada cluster HPC, nonaktifkan penentuan tersebut dan nyatakan BLACS versi LP64 yang sesuai dengan MPI yang digunakan.
cmake .. -DMPI_DETERMINE_LIBRARY_VERSION=OFF \
-DMKLBLACS_LIBRARY=/path/to/libmkl_blacs_openmpi_lp64.so
Pada cross-compilation, penentuan tersebut dinonaktifkan secara otomatis. Jika MKL_LIBRARIES dinyatakan, isinya digunakan apa adanya, sehingga sertakan juga spesifikasi link BLACS yang diperlukan. Untuk mengubah konfigurasi MKL yang di-cache oleh cmake, gunakan direktori build baru.
Build dengan GPU¶
Jika NVIDIA HPC SDK (nvc/nvc++/nvfortran) ditentukan sebagai compiler, CMake secara otomatis menambahkan flag berikut.
| Flag | Deskripsi |
|---|---|
-acc | Mengaktifkan OpenACC |
-Minfo=accel | Menampilkan informasi offload GPU saat kompilasi |
-gpu=ccnative,mem:managed | Mendeteksi GPU lingkungan build secara otomatis untuk menentukan target, dan menggunakan Unified Memory |
Jika -DNVHPC_NO_ACC=ON ditentukan, flag ini tidak ditambahkan.
Untuk prosedur rinci build GPU dengan OpenACC, lihat Build dengan GPU.
Build dengan Menentukan Arsitektur¶
Untuk ARCH, tentukan arsitektur komputer tempat FrontISTR dijalankan. Sesuai nilainya, implementasi yang disesuaikan untuk arsitektur tersebut disertakan, dan format penyimpanan matriks yang digunakan secara bawaan oleh solver metode iteratif ditentukan.
ARCH | Format Penyimpanan Matriks Bawaan | Implementasi yang Disertakan |
|---|---|---|
GENERIC (bawaan) | BSR | Tidak ada (hanya implementasi standar) |
FX64 | CSR | Implementasi untuk A64FX. Perkalian matriks-vektor format CSR untuk masalah 3 derajat kebebasan dan prapengkondisian SSOR, serta partisi METIS berbobot node berbasis node dari hecmw_part1 |
SXAT | SBLAS | Implementasi untuk SX-Aurora TSUBASA (belum diimplementasikan) |
Nilai ARCH tidak ditentukan secara otomatis dari lingkungan build atau compiler. Pada cross-compilation juga, nilai yang ditentukan digunakan apa adanya, sehingga tentukan secara eksplisit sesuai komputer tempat program dijalankan. Jika nilai yang tidak ada pada tabel (seperti fx64 huruf kecil) ditentukan, cmake berhenti dengan error.
Format penyimpanan matriks dapat diubah per analisis melalui MATRIXFORMAT pada !SOLVER dalam data kontrol analisis.
Untuk prosedur rinci build untuk A64FX dengan compiler Fujitsu, lihat Build untuk A64FX.