Skip to content
Snippets Groups Projects
Commit a668c7c5 authored by Martin Bauer's avatar Martin Bauer
Browse files

UniformGridGenerated: trt testcases

parent 0523675f
No related merge requests found
Pipeline #21111 failed with stages
in 3 hours, 44 minutes, and 47 seconds
...@@ -10,7 +10,8 @@ waLBerla_python_file_generates(UniformGridGenerated.py ...@@ -10,7 +10,8 @@ waLBerla_python_file_generates(UniformGridGenerated.py
GenDefines.h) GenDefines.h)
foreach(config trt smagorinsky mrt3 mrt entropic_kbc_n4 cumulant ) #foreach(config trt smagorinsky mrt3 mrt entropic_kbc_n4 cumulant )
foreach(config trt trt_nt_split trt_nt trt_split)
waLBerla_add_executable ( NAME UniformGridBenchmarkGenerated_${config} waLBerla_add_executable ( NAME UniformGridBenchmarkGenerated_${config}
FILES UniformGridGenerated.cpp Pinning.cpp UniformGridGenerated.py FILES UniformGridGenerated.cpp Pinning.cpp UniformGridGenerated.py
DEPENDS blockforest boundary core domain_decomposition field geometry timeloop vtk gui DEPENDS blockforest boundary core domain_decomposition field geometry timeloop vtk gui
......
...@@ -26,7 +26,7 @@ Parameters ...@@ -26,7 +26,7 @@ Parameters
timesteps 2000; // time steps of one performance measurement default 60 timesteps 2000; // time steps of one performance measurement default 60
warmupSteps 1; // number of steps to run before measurement starts warmupSteps 1; // number of steps to run before measurement starts
outerIterations 1; // how many measurements to conduct outerIterations 1; // how many measurements to conduct
vtkWriteFrequency 100; // write a VTK file every n'th step, if zero VTK output is disabled WriteFrequency 100; // write a VTK file every n'th step, if zero VTK output is disabled
remainingTimeLoggerFrequency 6; // interval in seconds to log the estimated remaining time remainingTimeLoggerFrequency 6; // interval in seconds to log the estimated remaining time
fPadding 3; fPadding 3;
......
...@@ -20,6 +20,28 @@ options_dict = { ...@@ -20,6 +20,28 @@ options_dict = {
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'compressible': False, 'compressible': False,
'relaxation_rate': omega, 'relaxation_rate': omega,
'opts': {"two_field_split": False, "two_field_nt_stores": False}
},
'trt_nt_split': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'opts': {"two_field_split": True, "two_field_nt_stores": True}
},
'trt_nt': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'opts': {"two_field_split": False, "two_field_nt_stores": True}
},
'trt_split': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'opts': {"two_field_split": True, "two_field_nt_stores": False}
}, },
'mrt': { 'mrt': {
'method': 'mrt', 'method': 'mrt',
...@@ -79,17 +101,17 @@ with CodeGeneration() as ctx: ...@@ -79,17 +101,17 @@ with CodeGeneration() as ctx:
} }
opts = { opts = {
'two_field_cse_pdfs': False, 'two_field_cse_pdfs': False,
'two_field_cse_global': False, 'two_field_cse_global': True,
'two_field_split': True, 'two_field_split': True,
'two_field_nt_stores': True, 'two_field_nt_stores': True,
'aa_even_cse_pdfs': False, 'aa_even_cse_pdfs': False,
'aa_even_cse_global': False, 'aa_even_cse_global': True,
'aa_even_split': False, 'aa_even_split': False,
'aa_even_nt_stores': False, 'aa_even_nt_stores': False,
'aa_odd_cse_pdfs': False, 'aa_odd_cse_pdfs': False,
'aa_odd_cse_global': False, 'aa_odd_cse_global': True,
'aa_odd_split': True, 'aa_odd_split': True,
'aa_odd_nt_stores': False, 'aa_odd_nt_stores': False,
...@@ -105,8 +127,12 @@ with CodeGeneration() as ctx: ...@@ -105,8 +127,12 @@ with CodeGeneration() as ctx:
if config_name == '': if config_name == '':
config_name = 'trt' config_name = 'trt'
options = options_dict[config_name] options = options_dict[config_name]
options.update(common_options)
options = options.copy() options = options.copy()
options.update(common_options)
opts = opts.copy()
if 'opts' in options:
opts.update(options['opts'])
del options['opts']
if d3q27: if d3q27:
options['stencil'] = 'D3Q27' options['stencil'] = 'D3Q27'
......
...@@ -48,6 +48,13 @@ def domain_decomposition_func_full(processes, threads, block_size): ...@@ -48,6 +48,13 @@ def domain_decomposition_func_full(processes, threads, block_size):
} }
def domain_decomposition_func_z_strong_scaling(processes, threads, block_size):
return {
'blocks': (1, 1, processes),
'cellsPerBlock': (block_size[0], block_size[1], block_size[2])
}
class BenchmarkScenario: class BenchmarkScenario:
def __init__(self, block_size=(256, 128, 128), direct_comm=True, def __init__(self, block_size=(256, 128, 128), direct_comm=True,
time_step_mode='aa', two_field_kernel_type='generated', time_step_mode='aa', two_field_kernel_type='generated',
...@@ -173,6 +180,18 @@ def weak_scaling(): ...@@ -173,6 +180,18 @@ def weak_scaling():
scenarios.add(sc) scenarios.add(sc)
def trt_two_field_benchmark():
scenarios = wlb.ScenarioManager()
common = {'block_size': (300, 100, 100),
'time_step_mode': 'two_field',
'direct_comm': False,
'domain_decomposition_func': domain_decomposition_func_z_strong_scaling,
}
scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='manualGeneric'))
scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='manualD3Q19'))
scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='generated'))
def padding_test(): def padding_test():
scenarios = wlb.ScenarioManager() scenarios = wlb.ScenarioManager()
for block_size in [(300, 100, 100), (500, 100, 100)]: for block_size in [(300, 100, 100), (500, 100, 100)]:
......
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