Skip to content
Snippets Groups Projects
.gitlab-ci.yml 8.69 KiB
Newer Older
  • Learn to ignore specific revisions
  • # 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_OPENMP: "no"
    
        WITH_CUDA: "no"
        WITH_CUDA_ARCH: "auto"
        WITH_MIC: "no"
    
        # configurations
        WITH_TESTS: "no"
    
        WITH_COVERAGE: "no"
    
        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
    
    #        - 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_OPENMP=${WITH_OPENMP}
    
                    -DWITH_CUDA=${WITH_CUDA}
                    -DWITH_CUDA_ARCH=${WITH_CUDA_ARCH}
                    -DWITH_MIC=${WITH_MIC}
                    -DWITH_TESTS=${WITH_TESTS}
    
                    -DWITH_DOC=${WITH_DOC}
    
                    -DWITH_COVERAGE=${WITH_COVERAGE}
    
                    -DWITH_EXAMPLES=${WITH_EXAMPLES}
    
                    -DWITH_TOOLS=${WITH_TOOLS}
                    -DWITH_PYTHON=${WITH_PYTHON}
    
            # "install" implies the "all" target
    
    #        - make install
    
    #        - make test
            - ninja ${NINJAFLAGS} install
    
            - if [[ ${WITH_TESTS} == "yes" ]]; then
                    ninja test;
              fi
    
            - 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_tests_Debug:
        <<: *build_template
        tags:
            - openmp
            - gpu
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            BUILD_TYPE: Debug
            WITH_TESTS: "yes"
    
    cuda_tests_Release:
        <<: *build_template
        tags:
            - openmp
            - gpu
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            BUILD_TYPE: Release
            WITH_TESTS: "yes"
    
    
    cuda_examples_Debug:
        <<: *build_template
        tags:
            - openmp
            - gpu
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            BUILD_TYPE: Debug
            WITH_EXAMPLES: "yes"
    
    cuda_examples_Release:
    
        <<: *build_template
    
            - gpu
        variables:
            <<: *default_cmake_flags
    
            WITH_CUDA: "yes"
    
            BUILD_TYPE: Release
            WITH_EXAMPLES: "yes"
    
    
    
    cuda_benchmarks_tools_python_Debug:
        <<: *build_template
        tags:
            - openmp
            - gpu
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            BUILD_TYPE: Debug
            WITH_BENCHMARKS: "yes"
    
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    cuda_benchmarks_tools_python_Release:
    
        <<: *build_template
    
        variables:
            <<: *default_cmake_flags
    
            WITH_CUDA: "yes"
    
            BUILD_TYPE: Release
    
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    
    cuda_mpi_tests_Debug:
        <<: *build_template
        tags:
            - openmp
            - gpu
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            WITH_MPI: "yes"
            BUILD_TYPE: Debug
            WITH_TESTS: "yes"
    
    cuda_mpi_tests_Release:
    
        <<: *build_template
        tags:
            - openmp
            - gpu
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            WITH_MPI: "yes"
            BUILD_TYPE: Release
    
    cuda_mpi_examples_Debug:
    
        <<: *build_template
        tags:
    
        variables:
            <<: *default_cmake_flags
    
            WITH_OPENMP: "yes"
    
            WITH_CUDA: "yes"
    
            BUILD_TYPE: Debug
    
    cuda_mpi_examples_Release:
    
        variables:
            <<: *default_cmake_flags
    
            WITH_MPI: "yes"
            BUILD_TYPE: Release
            WITH_EXAMPLES: "yes"
    
    
    cuda_mpi_benchmarks_tools_python_Debug:
        <<: *build_template
        tags:
            - openmp
            - gpu
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_CUDA: "yes"
            WITH_MPI: "yes"
    
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    cuda_mpi_benchmarks_tools_python_Release:
    
        <<: *build_template
        tags:
    
        variables:
            <<: *default_cmake_flags
    
            WITH_OPENMP: "yes"
    
            WITH_CUDA: "yes"
    
            BUILD_TYPE: Release
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    
    
    
    
    default_tests_Debug:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
            BUILD_TYPE: Debug
            WITH_TESTS: "yes"
    
    default_tests_Release:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
            BUILD_TYPE: Release
            WITH_TESTS: "yes"
    
    default_examples_Debug:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
            BUILD_TYPE: Debug
            WITH_EXAMPLES: "yes"
    
    default_examples_Release:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
            BUILD_TYPE: Release
            WITH_EXAMPLES: "yes"
    
    default_benchmarks_tools_python_Debug:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
    
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    default_benchmarks_tools_python_Release:
        <<: *build_template
        variables:
            <<: *default_cmake_flags
            BUILD_TYPE: Release
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
        <<: *build_template
    
        tags:
            - openmp
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_MPI: "yes"
            BUILD_TYPE: Debug
            WITH_TESTS: "yes"
    
        <<: *build_template
    
        variables:
            <<: *default_cmake_flags
    
            WITH_OPENMP: "yes"
            WITH_MPI: "yes"
    
            BUILD_TYPE: Release
    
        <<: *build_template
        tags:
            - openmp
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_MPI: "yes"
            BUILD_TYPE: Debug
    
        <<: *build_template
        tags:
            - openmp
            - mpi
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
            WITH_MPI: "yes"
            BUILD_TYPE: Release
    
    mpi_benchmarks_tools_python_Debug:
    
        <<: *build_template
        tags:
            - openmp
    
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
    
            BUILD_TYPE: Debug
    
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"
    
    mpi_benchmarks_tools_python_Release:
    
        <<: *build_template
        tags:
            - openmp
    
        variables:
            <<: *default_cmake_flags
            WITH_OPENMP: "yes"
    
            BUILD_TYPE: Release
    
            WITH_BENCHMARKS: "yes"
            WITH_TOOLS: "yes"
            WITH_PYTHON: "yes"