Skip to content
Snippets Groups Projects
Commit c5217465 authored by Sebastian Eibl's avatar Sebastian Eibl
Browse files

added automatic test script

parent 626d941a
Branches
Tags
No related merge requests found
......@@ -1528,3 +1528,64 @@ conda-py35-linux:
- apt-get update
- apt-get install -y build-essential
- conda build --python=3.5 --user=lssfau utilities/conda/walberla
###############################################################################
## ##
## Benchmarks ##
## ##
###############################################################################
.benchmark_template: &benchmark_definition
script:
- apt-get update --fix-missing
- apt-get install -y python3-influxdb python3-git
- $CXX --version
- cmake --version
- ccache --version
- mpirun --version
- export CCACHE_BASEDIR=$CI_PROJECT_DIR
- mkdir $CI_PROJECT_DIR/build
- cd $CI_PROJECT_DIR/build
- cmake .. -DWALBERLA_BUFFER_DEBUG=OFF -DWALBERLA_BUILD_TESTS=OFF -DWALBERLA_BUILD_BENCHMARKS=ON -DWALBERLA_BUILD_TUTORIALS=OFF -DWALBERLA_BUILD_TOOLS=OFF -DWALBERLA_BUILD_WITH_MPI=ON -DWALBERLA_BUILD_WITH_CUDA=OFF -DWALBERLA_BUILD_WITH_PYTHON=OFF -DWALBERLA_BUILD_WITH_OPENMP=OFF -DCMAKE_BUILD_TYPE=RELEASE -DMPIEXEC_PREFLAGS=$MPIEXEC_PREFLAGS -DWALBERLA_DOUBLE_ACCURACY=ON -DWARNING_ERROR=ON -DWALBERLA_BUILD_WITH_METIS=OFF -DWALBERLA_BUILD_WITH_PARMETIS=OFF -DWALBERLA_OPTIMIZE_FOR_LOCALHOST=ON -DWALBERLA_BUILD_WITH_FASTMATH=ON -DWALBERLA_BUILD_WITH_LTO=ON
- cmake . -LAH
- cd apps/benchmarks/PeriodicGranularGas
- make -j 20
- export PATH=$PATH:/usr/local/likwid/bin
- likwid-setFrequencies -t 0
- likwid-setFrequencies -g performance
- likwid-setFrequencies -x 3.3 -y 3.3 # set frequency to 3.3
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --DEM --syncNextNeighbor | tee PeriodicGranularGas_DEM_NN.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --DEM --syncShadowOwners | tee PeriodicGranularGas_DEM_SO.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --HCSITS --syncNextNeighbor --InelasticFrictionlessContact | tee PeriodicGranularGas_HCSITS_NN_IFC.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --HCSITS --syncNextNeighbor --ApproximateInelasticCoulombContactByDecoupling | tee PeriodicGranularGas_HCSITS_NN_AICCBD.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --HCSITS --syncNextNeighbor --InelasticCoulombContactByDecoupling | tee PeriodicGranularGas_HCSITS_NN_ICCBD.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --HCSITS --syncNextNeighbor --InelasticGeneralizedMaximumDissipationContact | tee PeriodicGranularGas_HCSITS_NN_IGMDC.txt
- mpirun --allow-run-as-root -np 8 --map-by core --bind-to core --report-bindings ./PeriodicGranularGas PeriodicGranularGas.cfg --HCSITS --syncShadowOwners --InelasticFrictionlessContact | tee PeriodicGranularGas_HCSITS_SO_IFC.txt
- python3 upload.py
only:
variables:
- $ENABLE_BENCHMARKS
tags:
- docker-benchmark
artifacts:
paths:
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_DEM_NN.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_DEM_SO.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_HCSITS_NN_IFC.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_HCSITS_NN_AICCBD.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_HCSITS_NN_ICCBD.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_HCSITS_NN_IGMDC.txt
- $CI_PROJECT_DIR/build/apps/benchmarks/PeriodicGranularGas/PeriodicGranularGas_HCSITS_SO_IFC.txt
benchmark_intel17:
<<: *benchmark_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:17
benchmark_gcc7:
<<: *benchmark_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:7
benchmark_clang6:
<<: *benchmark_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:6.0
\ No newline at end of file
import os
import time
import math
import random
import re
from influxdb import InfluxDBClient
from git import Repo
def main():
try:
write_user_pw = os.environ["INFLUXDB_WRITE_USER"]
except KeyError:
import sys
print('Password for the InfluxDB write_user was not set.\n',
'See https://docs.gitlab.com/ee/ci/variables/#secret-variables', file=sys.stderr)
exc_info = sys.exc_info()
raise exc_info[0].with_traceback(exc_info[1], exc_info[2])
client = InfluxDBClient('i10grafana.informatik.uni-erlangen.de', 8086,
'pe', write_user_pw, 'pe')
#repo = Repo(search_parent_directories=True)
#commit = repo.head.commit
with open("PeriodicGranularGas_DEM_NN.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'DEM',
'friction': 'Coulomb',
'sync' : 'next neighbor'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_DEM_SO.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'DEM',
'friction': 'Coulomb',
'sync' : 'shadow owner'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_HCSITS_NN_IFC.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'HCSITS',
'friction': 'InelasticFrictionlessContact',
'sync' : 'next neighbor'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_HCSITS_NN_AICCBD.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'HCSITS',
'friction': 'ApproximateInelasticCoulombContactByDecoupling',
'sync' : 'next neighbor'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_HCSITS_NN_ICCBD.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'HCSITS',
'friction': 'InelasticCoulombContactByDecoupling',
'sync' : 'next neighbor'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_HCSITS_NN_IGMDC.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'HCSITS',
'friction': 'InelasticGeneralizedMaximumDissipationContact',
'sync' : 'next neighbor'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
#*************************************************
with open("PeriodicGranularGas_HCSITS_SO_IFC.txt") as f:
s = f.read()
m = re.search('runtime: (\d*.\d*)', s)
json_body = [
{
'measurement': 'pe_benchmark',
'tags': {
'host' : os.uname()[1],
'image' : os.environ["DOCKER_IMAGE_NAME"],
'model' : 'HCSITS',
'friction': 'InelasticFrictionlessContact',
'sync' : 'shadow owner'
},
'time': int(time.time()),
'fields': {'runtime': float(m.group(1))}
}
]
print(float(m.group(1)))
client.write_points(json_body, time_precision='s')
if __name__ == "__main__":
main()
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment