Vai al contenuto

Compilazione con CMake

Questa pagina descrive la procedura dall'ottenimento del codice sorgente di FrontISTR fino alla compilazione e all'installazione. Per i dettagli sulle librerie dipendenti, vedere Dipendenze obbligatorie e opzionali.

Ottenimento del codice sorgente

Il codice sorgente di FrontISTR può essere ottenuto da GitLab o GitHub.

# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git

# GitHub (mirror)
git clone https://github.com/FrontISTR/FrontISTR.git

Procedura di build

FrontISTR presuppone una build out-of-source (la compilazione direttamente nell'albero dei sorgenti è vietata). Creare una directory build ed eseguire cmake al suo interno.

cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)

Dopo la build, il programma può essere eseguito direttamente come /path/to/FrontISTR/build/fistr1/fistr1. Per installarlo nel percorso di sistema (CMAKE_INSTALL_PREFIX), eseguire inoltre il comando seguente.

cmake --build . --target install

Opzioni CMake

Le opzioni il cui valore predefinito è indicato come "ON se rilevato" vengono abilitate automaticamente quando la libreria corrispondente viene rilevata nel sistema durante l'esecuzione di cmake. Possono essere disabilitate esplicitamente specificando -DWITH_XXX=OFF.

Opzione Predefinito Descrizione
WITH_MPI ON Abilita il parallelismo MPI
WITH_OPENMP ON se rilevato Abilita il parallelismo a thread OpenMP
WITH_METIS ON se rilevato Abilita la decomposizione del dominio mediante METIS
METIS_VER_4 OFF Usa METIS v4 (OFF usa v5)
WITH_MUMPS ON se rilevato Abilita il solver diretto parallelo MUMPS
WITH_MKL ON se rilevato Abilita Intel MKL (incluso PARDISO)
WITH_LAPACK ON se rilevato Abilita la stima del numero di condizionamento mediante LAPACK
WITH_ML ON se rilevato Abilita il precondizionamento AMG mediante Trilinos ML
WITH_REFINER ON se rilevato Abilita il raffinamento della mesh mediante REVOCAP_Refiner
WITH_REVOCAP ON se rilevato Abilita l'analisi accoppiata mediante REVOCAP_Coupler
WITH_TOOLS ON Compila gli strumenti inclusi
WITH_DOC OFF Genera la documentazione API con Doxygen
WITH_NETCDF ON se rilevato Abilita l'output Exodus II (NetCDF)
WINDOWS OFF Abilita la compilazione per Windows
CMAKE_BUILD_TYPE RELEASE Tipo di build (RELEASE / DEBUG)
CMAKE_INSTALL_PREFIX /usr/local Directory di installazione
DEBUG_EXTRA OFF Abilita il controllo delle perdite di memoria (per GCC, -fsanitize=address)

Build DEBUG

Quando si specifica CMAKE_BUILD_TYPE=DEBUG, vengono aggiunti i seguenti flag di debug specifici del compilatore.

Compilatore Flag aggiuntivi
GCC -fbounds-check -fbacktrace
Intel -check uninit,bound -traceback
cmake -DCMAKE_BUILD_TYPE=DEBUG ..

Compilazione con una GPU

Quando NVIDIA HPC SDK (nvc/nvc++/nvfortran) è specificato come compilatore, CMake aggiunge automaticamente i flag seguenti.

Flag Descrizione
-acc Abilita OpenACC
-Minfo=accel Visualizza durante la compilazione le informazioni sull'offloading GPU
-gpu=ccnative,mem:managed Rileva automaticamente la GPU nell'ambiente di build per determinare il target e utilizza la Unified Memory

Per la procedura dettagliata delle build GPU con OpenACC, vedere Compilazione con una GPU.