forked from arborx/ArborX
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
131 lines (122 loc) · 6.13 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# see https://docs.gitlab.com/ce/ci/yaml/README.html for all available options
variables:
SCHEDULER_PARAMETERS: "-J ArborX_CI -W 1:00 -nnodes 1 -P CSC333 -alloc_flags smt1"
CUSTOM_CI_BUILDS_DIR: "/gpfs/wolf/csc333/scratch/${GITLAB_RUNNER_USER}"
stages:
- buildDependencies
- buildArborX
- runBenchmarks
- compare
.LoadModules:
before_script:
- module load gcc/9.1.0 cuda/11.0.3 cmake/3.22.2 git/2.31.1 spectrum-mpi/10.4.0.3-20210112 boost/1.77.0
.BuildBenchmark:
extends: .LoadModules
stage: buildDependencies
script:
- git clone https://github.com/google/benchmark.git -b v1.4.1 &&
cd benchmark &&
git clone https://github.com/google/googletest.git -b release-1.8.1 &&
mkdir build && cd build &&
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++ -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_INSTALL_PREFIX=/ccsopen/proj/csc333/benchmark.install .. &&
make && make install
tags:
- nobatch
.BuildKokkos:
extends: .LoadModules
stage: buildDependencies
script:
- git clone --depth=1 --branch 3.4.01 https://github.com/kokkos/kokkos.git &&
cd kokkos &&
mkdir build &&
cd build &&
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/ccsopen/proj/csc333/kokkos.install -DCMAKE_CXX_COMPILER=${CI_PROJECT_DIR}/kokkos/bin/nvcc_wrapper -DCMAKE_CXX_EXTENSIONS=OFF -DKokkos_ENABLE_SERIAL=ON -DKokkos_ENABLE_OPENMP=ON -DKokkos_ENABLE_CUDA=ON -DKokkos_ENABLE_CUDA_LAMBDA=ON -DKokkos_ARCH_POWER9=ON -DKokkos_ARCH_VOLTA70=ON .. &&
make &&
make install
tags:
- nobatch
BuildArborXBranch:
extends: .LoadModules
stage: buildArborX
script:
- git fetch
- export BRANCH_HASH=`git rev-parse HEAD`
- git merge origin/arborx/ArborX/master
- mkdir build && cd build &&
cmake -DCMAKE_PREFIX_PATH="/ccsopen/proj/csc333/kokkos.install;/ccsopen/proj/csc333/benchmark.install"
-DCMAKE_CXX_COMPILER=/ccsopen/proj/csc333/kokkos.install/bin/nvcc_wrapper
-DARBORX_ENABLE_MPI=ON
-DARBORX_ENABLE_TESTS=OFF
-DARBORX_ENABLE_BENCHMARKS=ON
-DARBORX_PERFORMANCE_TESTING=ON .. &&
make ArborX_BoundingVolumeHierarchy.exe
- cp ./benchmarks/bvh_driver/ArborX_BoundingVolumeHierarchy.exe /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyBranch${BRANCH_HASH}.exe
- echo export BRANCH_HASH=${BRANCH_HASH} > ${CI_PROJECT_DIR}/branch_hash
tags:
- nobatch
artifacts:
paths:
- ${CI_PROJECT_DIR}/branch_hash
BuildArborXMaster:
extends: .LoadModules
stage: buildArborX
script:
- git fetch
- export BRANCH_HASH=`git rev-parse HEAD`
- git worktree add -f ${CI_PROJECT_DIR}/arborx-master origin/arborx/ArborX/master
- cd ${CI_PROJECT_DIR}/arborx-master
- mkdir build_master && cd build_master &&
cmake -DCMAKE_PREFIX_PATH="/ccsopen/proj/csc333/kokkos.install;/ccsopen/proj/csc333/benchmark.install"
-DCMAKE_CXX_COMPILER=/ccsopen/proj/csc333/kokkos.install/bin/nvcc_wrapper
-DARBORX_ENABLE_MPI=ON
-DARBORX_ENABLE_TESTS=OFF
-DARBORX_ENABLE_BENCHMARKS=ON
-DARBORX_PERFORMANCE_TESTING=ON .. &&
make ArborX_BoundingVolumeHierarchy.exe
- cp ./benchmarks/bvh_driver/ArborX_BoundingVolumeHierarchy.exe /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyMaster${BRANCH_HASH}.exe
tags:
- nobatch
RunBenchmarks:
extends: .LoadModules
stage: runBenchmarks
script:
- source ${CI_PROJECT_DIR}/branch_hash
- export OMP_PROC_BIND=spread
- export OMP_PLACES=threads
- export JSRUN_OPTIONS="-n 1 -a 1 -c 42 -g 1 -r 1 -l CPU-CPU -d packed -b packed:42"
- export BENCHMARK_OPTIONS="--benchmark_repetitions=15
--exact-spec serial/1000/1000/10/1/0/0/2
--exact-spec serial/10000/10000/10/1/0/0/2
--exact-spec serial/100000/100000/10/1/0/0/2
--exact-spec serial/1000/1000/10/1/0/1/3
--exact-spec serial/10000/10000/10/1/0/1/3
--exact-spec serial/100000/100000/10/1/0/1/3
--exact-spec openmp/1000/1000/10/1/0/0/2
--exact-spec openmp/10000/10000/10/1/0/0/2
--exact-spec openmp/100000/100000/10/1/0/0/2
--exact-spec openmp/1000/1000/10/1/0/1/3
--exact-spec openmp/10000/10000/10/1/0/1/3
--exact-spec openmp/100000/100000/10/1/0/1/3
--exact-spec cuda/10000/10000/10/1/0/0/2
--exact-spec cuda/100000/100000/10/1/0/0/2
--exact-spec cuda/1000000/1000000/10/1/0/0/2
--exact-spec cuda/10000/10000/10/1/0/1/3
--exact-spec cuda/100000/100000/10/1/0/1/3
--exact-spec cuda/1000000/1000000/10/1/0/1/3"
- jsrun ${JSRUN_OPTIONS} /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyBranch${BRANCH_HASH}.exe ${BENCHMARK_OPTIONS} --benchmark_out_format=json --benchmark_out=/ccsopen/proj/csc333/arborx-branch${BRANCH_HASH}.json
- jsrun ${JSRUN_OPTIONS} /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyMaster${BRANCH_HASH}.exe ${BENCHMARK_OPTIONS} --benchmark_out_format=json --benchmark_out=/ccsopen/proj/csc333/arborx-master${BRANCH_HASH}.json
- rm /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyBranch${BRANCH_HASH}.exe /ccsopen/proj/csc333/ArborX_BoundingVolumeHierarchyMaster${BRANCH_HASH}.exe
tags:
- batch
CompareResults:
stage: compare
script:
- module load python/3.6.6-anaconda3-5.3.0
- source ${CI_PROJECT_DIR}/branch_hash
- /ccsopen/proj/csc333/tools/compare.py benchmarks /ccsopen/proj/csc333/arborx-master${BRANCH_HASH}.json /ccsopen/proj/csc333/arborx-branch${BRANCH_HASH}.json | grep "median" | tee ${CI_PROJECT_DIR}/regression${CI_PIPELINE_ID}
- rm /ccsopen/proj/csc333/arborx-branch${BRANCH_HASH}.json /ccsopen/proj/csc333/arborx-master${BRANCH_HASH}.json
tags:
- nobatch
artifacts:
paths:
- ${CI_PROJECT_DIR}/regression${CI_PIPELINE_ID}