Newer
Older
# vim: tabstop=4 shiftwidth=4 softtabstop=4
before_script:
- which g++
- which cmake
# Stages are useful only to enforce some ordering of the jobs. Every job is run
# in its own directory and only very few data can be shared between the jobs in
# different stages. It has to be zipped and uploaded to the server, so we can't
# do it with the build directory. Hence, we must build, test and install in the
# same job.
stages:
- build
# default flags for cmake
.default_cmake_flags_def: &default_cmake_flags
WITH_CUDA: "no"
WITH_CUDA_ARCH: "auto"
WITH_MIC: "no"
WITH_TESTS: "yes"
WITH_COVERAGE: "no"
Jakub Klinkovský
committed
# these are built only in the "full" config
WITH_BENCHMARKS: "no"
WITH_EXAMPLES: "no"
WITH_TOOLS: "no"
WITH_PYTHON: "no"
# template for build jobs
.build_template_def: &build_template
stage: build
script:
# set MPI compiler wrapper
- if [[ ${WITH_MPI} == "yes" ]]; then
export CXX=mpicxx;
export CC=mpicc;
fi
Jakub Klinkovský
committed
# all cores including hyperthreading
# - export NUM_CORES=$(grep "core id" /proc/cpuinfo | wc -l)
# # all pyhsical cores
- export NUM_CORES=$(grep "core id" /proc/cpuinfo | sort -u | wc -l)
# ninja does not have -l
# - export MAKEFLAGS="-l$(echo 1.5*$NUM_CORES | bc) -j$NUM_CORES"
- export NINJAFLAGS="-j$NUM_CORES"
- export CTEST_OUTPUT_ON_FAILURE=1
- mkdir -p "./builddir/$CI_JOB_NAME"
- pushd "./builddir/$CI_JOB_NAME"
- cmake ../..
-DCMAKE_BUILD_TYPE=${BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=$(pwd)/${BUILD_TYPE}_install_prefix
-DWITH_CUDA=${WITH_CUDA}
-DWITH_CUDA_ARCH=${WITH_CUDA_ARCH}
-DWITH_MIC=${WITH_MIC}
-DWITH_TESTS=${WITH_TESTS}
Jakub Klinkovský
committed
-DWITH_BENCHMARKS=${WITH_BENCHMARKS}
Jakub Klinkovský
committed
-DWITH_TOOLS=${WITH_TOOLS}
-DWITH_PYTHON=${WITH_PYTHON}
# "install" implies the "all" target
# - make test
- ninja ${NINJAFLAGS} install
- popd
variables:
<<: *default_cmake_flags
BUILD_TYPE: Debug
# Cuda builds are specified first because they take more time than host-only builds,
# which can be allocated on hosts whitout GPUs.
# Similarly, release builds are launched first to avoid the tail effect (they take
# significantly more time than debug builds).
cuda_full_Release:
- gpu
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
BUILD_TYPE: Release
WITH_BENCHMARKS: "yes"
WITH_EXAMPLES: "yes"
WITH_TOOLS: "yes"
WITH_PYTHON: "yes"
Jakub Klinkovský
committed
cuda_base_Release:
variables:
<<: *default_cmake_flags
cuda_mpi_Release:
<<: *build_template
tags:
- openmp
- gpu
- mpi
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
WITH_CUDA: "yes"
WITH_MPI: "yes"
BUILD_TYPE: Release
Jakub Klinkovský
committed
cuda_full_Debug:
- gpu
variables:
<<: *default_cmake_flags
WITH_CUDA: "yes"
BUILD_TYPE: Debug
Jakub Klinkovský
committed
WITH_BENCHMARKS: "yes"
WITH_EXAMPLES: "yes"
WITH_TOOLS: "yes"
WITH_PYTHON: "yes"
cuda_base_Debug:
<<: *build_template
tags:
- gpu
variables:
<<: *default_cmake_flags
WITH_CUDA: "yes"
BUILD_TYPE: Debug
cuda_mpi_Debug:
variables:
<<: *default_cmake_flags
WITH_MPI: "yes"
BUILD_TYPE: Debug
Jakub Klinkovský
committed
default_base_Debug:
Jakub Klinkovský
committed
default_base_Release:
<<: *build_template
variables:
<<: *default_cmake_flags
BUILD_TYPE: Release
default_mpi_Debug:
<<: *build_template
tags:
- openmp
- mpi
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
WITH_MPI: "yes"
BUILD_TYPE: Debug
default_mpi_Release:
<<: *build_template
tags:
- openmp
- mpi
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
WITH_MPI: "yes"
BUILD_TYPE: Release
Jakub Klinkovský
committed
default_full_Debug:
<<: *build_template
tags:
- openmp
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
BUILD_TYPE: Debug
Jakub Klinkovský
committed
WITH_BENCHMARKS: "yes"
WITH_EXAMPLES: "yes"
WITH_TOOLS: "yes"
WITH_PYTHON: "yes"
Jakub Klinkovský
committed
default_full_Release:
<<: *build_template
tags:
- openmp
variables:
<<: *default_cmake_flags
WITH_OPENMP: "yes"
BUILD_TYPE: Release
Jakub Klinkovský
committed
WITH_BENCHMARKS: "yes"
WITH_EXAMPLES: "yes"
WITH_TOOLS: "yes"
WITH_PYTHON: "yes"