Lewati ke isi

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.

cmake --build . --target install

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
cmake -DCMAKE_BUILD_TYPE=DEBUG ..

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.

cmake -DARCH=FX64 ..
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.