-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathconfig.yml
143 lines (139 loc) · 4.74 KB
/
config.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
132
133
134
135
136
137
138
139
140
141
142
143
version: 2.0
jobs:
gcc:
docker:
- image: quay.io/cbgeo/mpm
steps:
- checkout
# GCC
- run:
name: GCC build + MPI
command: |
mkdir -p build
[ "$(ls -A build)" ] && rm -rf build/*
cd build
source /etc/profile.d/modules.sh
export MODULEPATH=$MODULEPATH:/usr/share/modulefiles
module load mpi/openmpi-x86_64
export CXX_COMPILER=mpicxx
cmake -GNinja -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DKAHIP_ROOT=/home/cbgeo/KaHIP/ -DPARTIO_ROOT=/home/cbgeo/partio/ ..
ninja -j2
ctest -VV
mpirun -n 4 ./mpmtest [mpi]
clang:
docker:
- image: quay.io/cbgeo/mpm
steps:
- checkout
# Clang
- run:
name: Clang + Static analysis
command: |
mkdir -p build
[ "$(ls -A build)" ] && rm -rf build/*
cd build
scan-build cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DKAHIP_ROOT=/home/cbgeo/KaHIP/ -DPARTIO_ROOT=/home/cbgeo/partio/ ..
scan-build -k -V ninja -j2
ctest -VV
cppcheck:
docker:
- image: quay.io/cbgeo/mpm
steps:
- checkout
- run:
name: cppcheck/clang-format
command: |
cppcheck --version
cppcheck --inline-suppr --enable=warning --inconclusive --force --language=c++ --std=c++11 src/*.cc include/*.h include/*.tcc --error-exitcode=1
# clang-format
- run:
name: clang-format
command: |
python3 ./clang-tools/run-clang-format.py -r include/* src/* tests/*
codecov:
docker:
- image: quay.io/cbgeo/mpm
steps:
- checkout
# codecoverage
- run:
name: codecov.io
command: |
mkdir -p build
[ "$(ls -A build)" ] && rm -rf build/*
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DENABLE_COVERAGE=On -DKAHIP_ROOT=/home/cbgeo/KaHIP/ -DPARTIO_ROOT=/home/cbgeo/partio/ ..
make mpmtest_coverage -j2
./mpmtest_coverage
mpirun -n 4 ./mpmtest_coverage [mpi]
lcov --directory . --capture --output-file coverage.info
bash <(curl -s https://codecov.io/bash) -f coverage.info || echo "Codecov did not collect coverage reports"
benchmarks:
docker:
- image: quay.io/cbgeo/mpm
steps:
- checkout
# GCC
- run:
name: GCC build + MPI
command: |
mkdir -p build
[ "$(ls -A build)" ] && rm -rf build/*
cd build
source /etc/profile.d/modules.sh
export MODULEPATH=$MODULEPATH:/usr/share/modulefiles
module load mpi/openmpi-x86_64
export CXX_COMPILER=mpicxx
cmake -GNinja -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DKAHIP_ROOT=/home/cbgeo/KaHIP/ -DPARTIO_ROOT=/home/cbgeo/partio/ ..
ninja -j2
ctest -VV
mpirun -n 4 ./mpmtest [mpi]
# Benchmarks
- run:
name: Clone benchmarks
command: |
cd /home/cbgeo/project/build
git clone https://github.com/cb-geo/mpm-benchmarks.git benchmarks
# Benchmarks
- run:
name: 2D sliding block
command: |
cd /home/cbgeo/project/build
pip3 install tables --user
export OMP_NUM_THREADS=2
mpirun -n 4 ./mpm -f ./benchmarks/2d/sliding_block_inclined_boundary/
python3 ./benchmarks/2d/sliding_block_inclined_boundary/test_benchmark.py
# Stress
- run:
name: Uniaxial stress
command: |
cd /home/cbgeo/project/build
./mpm -f ./benchmarks/2d/uniaxial_stress/
python3 ./benchmarks/2d/uniaxial_stress/test_benchmark.py
# Traction
- run:
name: Uniaxial traction
command: |
cd /home/cbgeo/project/build
export OMP_NUM_THREADS=2
./mpm -f ./benchmarks/2d/uniaxial_traction/ -i mpm-nodal-forces.json
./mpm -f ./benchmarks/2d/uniaxial_traction/ -i mpm-particle-traction.json
python3 ./benchmarks/2d/uniaxial_stress/test_benchmark.py
workflows:
version: 2
build:
jobs:
- benchmarks
- clang
- cppcheck
- codecov
nightly:
jobs:
- benchmarks
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- develop