Збирання за допомогою CMake¶
На цій сторінці описано процедуру від отримання вихідного коду FrontISTR до збирання та встановлення. Докладніше про залежні бібліотеки див. Обов'язкові та необов'язкові залежності.
Отримання вихідного коду¶
Вихідний код FrontISTR можна отримати з GitLab або GitHub.
# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git
# GitHub (дзеркало)
git clone https://github.com/FrontISTR/FrontISTR.git
Процедура збирання¶
FrontISTR передбачає збирання поза деревом вихідного коду (збирання безпосередньо в дереві вихідного коду заборонено). Створіть каталог build і виконайте cmake у ньому.
cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)
Після збирання програму можна запускати безпосередньо як /path/to/FrontISTR/build/fistr1/fistr1. Щоб встановити її до системного шляху (CMAKE_INSTALL_PREFIX), додатково виконайте таку команду.
Параметри CMake¶
Параметри, для яких типове значення вказано як «ON, якщо виявлено», вмикаються автоматично, коли під час запуску cmake у системі знайдено відповідну бібліотеку. Їх можна явно вимкнути, задавши -DWITH_XXX=OFF.
| Параметр | Типове значення | Опис |
|---|---|---|
WITH_MPI |
ON |
Вмикає паралелізм MPI |
WITH_OPENMP |
ON, якщо виявлено | Вмикає потоковий паралелізм OpenMP |
WITH_METIS |
ON, якщо виявлено | Вмикає декомпозицію області за допомогою METIS |
METIS_VER_4 |
OFF |
Використовує METIS v4 (OFF означає v5) |
WITH_MUMPS |
ON, якщо виявлено | Вмикає паралельний прямий розв'язувач MUMPS |
WITH_MKL |
ON, якщо виявлено | Вмикає Intel MKL (включно з PARDISO) |
WITH_LAPACK |
ON, якщо виявлено | Вмикає оцінювання числа обумовленості за допомогою LAPACK |
WITH_ML |
ON, якщо виявлено | Вмикає AMG-передобумовлення за допомогою Trilinos ML |
WITH_REFINER |
ON, якщо виявлено | Вмикає згущення сітки за допомогою REVOCAP_Refiner |
WITH_REVOCAP |
ON, якщо виявлено | Вмикає зв'язаний аналіз за допомогою REVOCAP_Coupler |
WITH_TOOLS |
ON |
Збирає інструменти, що входять до комплекту |
WITH_DOC |
OFF |
Генерує документацію API за допомогою Doxygen |
WITH_NETCDF |
ON, якщо виявлено | Вмикає виведення Exodus II (NetCDF) |
WINDOWS |
OFF |
Вмикає збирання для Windows |
CMAKE_BUILD_TYPE |
RELEASE |
Тип збирання (RELEASE / DEBUG) |
CMAKE_INSTALL_PREFIX |
/usr/local |
Каталог встановлення |
DEBUG_EXTRA |
OFF |
Вмикає перевірку витоків пам'яті (для GCC, -fsanitize=address) |
Збирання DEBUG¶
Коли задано CMAKE_BUILD_TYPE=DEBUG, додаються такі налагоджувальні прапорці, специфічні для компілятора.
| Компілятор | Додаткові прапорці |
|---|---|
| GCC | -fbounds-check -fbacktrace |
| Intel | -check uninit,bound -traceback |
Збирання з GPU¶
Коли як компілятор задано NVIDIA HPC SDK (nvc/nvc++/nvfortran), CMake автоматично додає такі прапорці.
| Прапорець | Опис |
|---|---|
-acc |
Вмикає OpenACC |
-Minfo=accel |
Виводить під час компіляції інформацію про перенесення обчислень на GPU |
-gpu=ccnative,mem:managed |
Автоматично визначає GPU в середовищі збирання для вибору цільової архітектури та використовує Unified Memory |
Докладну процедуру збирання для GPU з OpenACC див. у розділі Збирання з GPU.