Support oneAPI in gitlab CI
[alexxy/gromacs.git] / admin / gitlab-ci / global.gitlab-ci.yml
1 # Mix-in job definitions.
2 # The (hidden) job definitions in this file are available to the regular job
3 # definitions in other files because this file is first in the *include* list
4 # in the root `.gitlab-ci.yml` file.
5
6 # Centralized definitions of common job parameter values.
7 # Parameters with many optional configurations may be in separate files.
8 # Refer to the Infrastructure section of the GROMACS Developer Guide.
9
10 .variables:default:
11   variables:
12     KUBERNETES_CPU_LIMIT: 8
13     KUBERNETES_CPU_REQUEST: 4
14     KUBERNETES_MEMORY_REQUEST: 8Gi
15     KUBERNETES_EXTENDED_RESOURCE_NAME: ""
16     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 0
17     CACHE_FALLBACK_KEY: "$CI_JOB_NAME-$CI_JOB_STAGE-master"
18     BUILD_DIR: build
19     INSTALL_DIR: install
20     CMAKE_GMXAPI_OPTIONS: ""
21
22 # Our generic before_script to install dependencies and prepare the ccache directory.
23 .before_script:default:
24   before_script:
25     - mkdir -p ccache
26     - export CCACHE_BASEDIR=${PWD}
27     - export CCACHE_DIR=${PWD}/ccache
28
29 # Behavioral templates
30
31 # Use a persistent compiler cache to speed up rebuilds for a single job.
32 .use-ccache:
33   cache:
34     key: "$CI_JOB_NAME-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
35     paths:
36       - ccache/
37
38 # Tool chains
39
40 .use-cuda:
41   variables:
42     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
43     CMAKE_GPU_OPTIONS: -DGMX_GPU=CUDA
44
45 .use-mpi:
46   variables:
47     CMAKE_MPI_OPTIONS: "-DGMX_MPI=ON"
48
49 .use-opencl:
50   variables:
51     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
52     CMAKE_GPU_OPTIONS: -DGMX_GPU=OpenCL
53
54 # Base definition for using gcc.
55 .use-gcc:base:
56   variables:
57     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=gcc-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=g++-$COMPILER_MAJOR_VERSION
58   before_script:
59     - mkdir -p ccache
60     - export CCACHE_BASEDIR=${PWD}
61     - export CCACHE_DIR=${PWD}/ccache
62
63 # Base definition for using clang.
64 .use-clang:base:
65   variables:
66     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=clang-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=clang++-$COMPILER_MAJOR_VERSION
67   before_script:
68     - mkdir -p ccache
69     - export CCACHE_BASEDIR=${PWD}
70     - export CCACHE_DIR=${PWD}/ccache
71     - export ASAN_SYMBOLIZER_PATH=/usr/local/bin/llvm-symbolizer
72
73 # Base definition for using oneAPI.
74 .use-oneapi:base:
75   variables:
76     # Use the HPC variants of icc and icpc so that OpenMP is active
77     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx
78     CMAKE_EXTRA_OPTIONS: -DGMX_FFT_LIBRARY=mkl
79   before_script:
80     - mkdir -p ccache
81     - export CCACHE_BASEDIR=${PWD}
82     - export CCACHE_DIR=${PWD}/ccache