3rd Party Software Installations¶
XGC uses the following external libraries:
Dependency |
Version |
Required for XGC |
Required for kernels |
---|---|---|---|
>=3.12.0 |
YES |
NO |
|
>=2.3.0 |
YES |
NO |
|
Any |
YES |
NO |
|
>=3.0 |
YES |
YES |
|
Any |
YES |
YES |
|
>=0.3.0 |
YES |
YES |
|
Any |
NO |
Testing only |
|
Any |
NO |
NO |
|
Any(**) |
NO |
NO |
**N.B.: Please use the “batch_develop” branch of Ginkgo.
It also depends on PSPLINE
and CAMTIMERS
, which are inside the repository in lib/
, and built automatically if needed.
Installation instructions¶
You may want to run XGC on an unsupported system or to customize your dependency installations. Here are some examples of installing the dependencies manually. Feedback is appreciated to make sure these stay useful.
Once you have installed the necessary dependencies, you will need to provide CMake with the location of XGC’s dependencies if they are already installed on your system. You can either do this on the CMake configuration line, e.g. adding -DPETSc_ROOT=<path to PETSc>
, or by creating an XGC_PLATFORM
by analogy to the existing ones, found in the XGC-Devel/CMake directory, e.g.:
cp CMake/find_dependencies_generic.cmake CMake/find_dependencies_new_platform.cmake
export XGC_PLATFORM=new_platform
PETSc¶
#!/usr/bin/python
if __name__ == '__main__':
import sys
import os
sys.path.insert(0, os.path.abspath('config'))
import configure
configure_options = [
'--COPTFLAGS=-fast -no-ipo',
'--CXXOPTFLAGS=-fast -no-ipo',
'--FOPTFLAGS=-fast -no-ipo',
'--download-parmetis',
'--download-metis',
# '--download-superlu', does not work with 64 !!!
# '--download-superlu_dist',
# '--download-hypre',
# '--download-mumps',
'--download-scalapack',
'--with-ssl=0',
'--with-cc=cc',
'--with-clib-autodetect=0',
'--with-cxx=CC',
'--with-cxxlib-autodetect=0',
'--with-debugging=0',
'--with-fc=ftn',
'--with-fortranlib-autodetect=0',
# '--with-hdf5-dir=/opt/cray/hdf5-parallel/1.8.13/intel/140/',
'--with-shared-libraries=0',
'--with-static-libraries=1',
'--with-x=0',
'--with-mpiexec=srun',
'LIBS=-lstdc++',
'--with-64-bit-indices',
'--with-batch=1',
'--prefix=/project/projectdirs/m499/Software/petsc/bdea225/cori_knl/intel-static/',
'PETSC_ARCH=arch-cori-knl-opt64-intel',
]
configure.petsc_configure(configure_options)
ADIOS2¶
mkdir build; cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$ADIOS2_INSTALL_DIR \
-DADIOS2_BUILD_EXAMPLES=OFF \
-DADIOS2_BUILD_TESTING=OFF \
..
FFTW¶
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$FFTW_INSTALL_DIR \
..
Kokkos¶
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$KOKKOS_INSTALL_DIR \
-DCMAKE_CXX_STANDARD=17 \
-DBUILD_TESTING=OFF \
-DKokkos_ENABLE_OPENMP=ON \
-DKokkos_ENABLE_SERIAL=ON \
-DKokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
..
An additional option is used for Cori:
-DKokkos_ENABLE_LIBDL=OFF \
Additional options for CUDA:
-DKokkos_ENABLE_CUDA=ON \
-DKokkos_ENABLE_CUDA_LAMBDA=ON \
-DKokkos_ARCH_VOLTA70=ON \
-DKokkos_ARCH_POWER9=ON \
Cabana¶
cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_PREFIX_PATH=$KOKKOS_INSTALL_DIR \
-DCMAKE_INSTALL_PREFIX=$CABANA_INSTALL_DIR \
-DCabana_ENABLE_CAJITA=OFF \
-DCabana_ENABLE_TESTING=Off \
-DCabana_ENABLE_EXAMPLES=Off \
..
GTest¶
cmake \
-DCMAKE_INSTALL_PREFIX=/Users/aaronscheinberg/Projects/googletest/install \
-DCMAKE_CXX_STANDARD=14 \
..
Ginkgo¶
For CoriGPU:
cmake \
-DCMAKE_CXX_COMPILER=nvc++ \
-DGINKGO_COMPILER_FLAGS=-pedantic \
-DCMAKE_INSTALL_PREFIX=/global/homes/d/dhruva/XGC-Devel/ginkgo/build/install_ompoff \
-DGINKGO_CUDA_ARCHITECTURES=Volta \
-DGINKGO_BUILD_OMP=OFF \
-DCMAKE_CXX_FLAGS=-Mint128 \
-DCMAKE_BUILD_TYPE:STRING=RELEASE \
-DGINKGO_BUILD_TESTS=off \
-DGINKGO_BUILD_BENCHMARKS=off \
-DGINKGO_BUILD_EXAMPLES=off \
-DGINKGO_BUILD_HWLOC=off \
..