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

Changes from RRZE testfront

parent a668c7c5
Branches master
No related merge requests found
Pipeline #21166 failed with stages
in 2 hours, 48 minutes, and 42 seconds
...@@ -10,8 +10,8 @@ waLBerla_python_file_generates(UniformGridGenerated.py ...@@ -10,8 +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 smagorinsky_d3q27 mrt mrt_d3q27 entropic entropic_kbc_n4 cumulant cumulant_d3q27
foreach(config trt trt_nt_split trt_nt trt_split) trt_nt_split trt_nt trt_split trt_aa1 trt_aa2 trt_aa3 trt_aa4 trt_aa1_d3q27 trt_aa2_d3q27 trt_aa3_d3q27 trt_aa4_d3q27 )
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
......
...@@ -18,6 +18,7 @@ options_dict = { ...@@ -18,6 +18,7 @@ options_dict = {
'trt': { 'trt': {
'method': 'trt', 'method': 'trt',
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'maxwellian_moments': False,
'compressible': False, 'compressible': False,
'relaxation_rate': omega, 'relaxation_rate': omega,
'opts': {"two_field_split": False, "two_field_nt_stores": False} 'opts': {"two_field_split": False, "two_field_nt_stores": False}
...@@ -26,6 +27,7 @@ options_dict = { ...@@ -26,6 +27,7 @@ options_dict = {
'method': 'trt', 'method': 'trt',
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'compressible': False, 'compressible': False,
'maxwellian_moments': False,
'relaxation_rate': omega, 'relaxation_rate': omega,
'opts': {"two_field_split": True, "two_field_nt_stores": True} 'opts': {"two_field_split": True, "two_field_nt_stores": True}
}, },
...@@ -33,6 +35,7 @@ options_dict = { ...@@ -33,6 +35,7 @@ options_dict = {
'method': 'trt', 'method': 'trt',
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'compressible': False, 'compressible': False,
'maxwellian_moments': False,
'relaxation_rate': omega, 'relaxation_rate': omega,
'opts': {"two_field_split": False, "two_field_nt_stores": True} 'opts': {"two_field_split": False, "two_field_nt_stores": True}
}, },
...@@ -40,12 +43,46 @@ options_dict = { ...@@ -40,12 +43,46 @@ options_dict = {
'method': 'trt', 'method': 'trt',
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'compressible': False, 'compressible': False,
'maxwellian_moments': False,
'relaxation_rate': omega, 'relaxation_rate': omega,
'opts': {"two_field_split": True, "two_field_nt_stores": False} 'opts': {"two_field_split": True, "two_field_nt_stores": False}
}, },
'trt_aa1': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'maxwellian_moments': False,
'opts': {"aa_even_split": True, "aa_odd_split": False}
},
'trt_aa2': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'maxwellian_moments': False,
'opts': {"aa_even_split": False, "aa_odd_split": True}
},
'trt_aa3': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'maxwellian_moments': False,
'opts': {"aa_even_split": True, "aa_odd_split": True}
},
'trt_aa4': {
'method': 'trt',
'stencil': 'D3Q19',
'compressible': False,
'relaxation_rate': omega,
'maxwellian_moments': False,
'opts': {"aa_even_split": False, "aa_odd_split": False}
},
'mrt': { 'mrt': {
'method': 'mrt', 'method': 'mrt',
'stencil': 'D3Q19', 'stencil': 'D3Q19',
'maxwellian_moments': False,
'relaxation_rates': [omega, 1.3, 1.4, 1.2, 1.1, 1.15, 1.234], 'relaxation_rates': [omega, 1.3, 1.4, 1.2, 1.1, 1.15, 1.234],
}, },
'mrt_full': { 'mrt_full': {
...@@ -112,10 +149,10 @@ with CodeGeneration() as ctx: ...@@ -112,10 +149,10 @@ with CodeGeneration() as ctx:
'aa_odd_cse_pdfs': False, 'aa_odd_cse_pdfs': False,
'aa_odd_cse_global': True, 'aa_odd_cse_global': True,
'aa_odd_split': True, 'aa_odd_split': False,
'aa_odd_nt_stores': False, 'aa_odd_nt_stores': False,
'compiled_in_boundaries': False, 'compiled_in_boundaries': True,
} }
config_name = ctx.config config_name = ctx.config
noopt = False noopt = False
...@@ -158,10 +195,14 @@ with CodeGeneration() as ctx: ...@@ -158,10 +195,14 @@ with CodeGeneration() as ctx:
((0, 0, 1), UBB([0.05, 0, 0])), ((0, 0, 1), UBB([0.05, 0, 0])),
((0, 0, -1), NoSlip()), ((0, 0, -1), NoSlip()),
)) ))
cr_even = create_lb_collision_rule(stencil="D3Q19", compressible=False, optimization={'cse_global': opts['aa_even_cse_global'], cr_even = create_lb_collision_rule(**options, optimization={'cse_global': opts['aa_even_cse_global'],
'cse_pdfs': opts['aa_even_cse_pdfs']}) 'cse_pdfs': opts['aa_even_cse_pdfs'],
cr_odd = create_lb_collision_rule(stencil="D3Q19", compressible=False, optimization={'cse_global': opts['aa_odd_cse_global'], # 'split': opts['aa_even_split']
'cse_pdfs': opts['aa_odd_cse_pdfs']}) })
cr_odd = create_lb_collision_rule(**options, optimization={'cse_global': opts['aa_odd_cse_global'],
'cse_pdfs': opts['aa_odd_cse_pdfs'],
#'split': opts['aa_odd_split']
})
update_rule_aa_even = update_rule_with_push_boundaries(cr_even, pdfs, boundaries, AAEvenTimeStepAccessor, AAOddTimeStepAccessor.read) update_rule_aa_even = update_rule_with_push_boundaries(cr_even, pdfs, boundaries, AAEvenTimeStepAccessor, AAOddTimeStepAccessor.read)
update_rule_aa_odd = update_rule_with_push_boundaries(cr_odd, pdfs, boundaries, AAOddTimeStepAccessor, AAEvenTimeStepAccessor.read) update_rule_aa_odd = update_rule_with_push_boundaries(cr_odd, pdfs, boundaries, AAOddTimeStepAccessor, AAEvenTimeStepAccessor.read)
else: else:
......
...@@ -58,7 +58,7 @@ def domain_decomposition_func_z_strong_scaling(processes, threads, block_size): ...@@ -58,7 +58,7 @@ def domain_decomposition_func_z_strong_scaling(processes, threads, block_size):
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',
domain_decomposition_func=domain_decomposition_func_z, pinning="", f_padding=0, domain_decomposition_func=domain_decomposition_func_z, pinning="auto", f_padding=0,
db_file_name='uniform_grid_gen.sqlite'): db_file_name='uniform_grid_gen.sqlite'):
self.block_size = block_size self.block_size = block_size
self.direct_comm = direct_comm self.direct_comm = direct_comm
...@@ -68,13 +68,17 @@ class BenchmarkScenario: ...@@ -68,13 +68,17 @@ class BenchmarkScenario:
self.threads = int(os.environ['OMP_NUM_THREADS']) self.threads = int(os.environ['OMP_NUM_THREADS'])
self.processes = wlb.mpi.numProcesses() self.processes = wlb.mpi.numProcesses()
self.db_file_name = db_file_name self.db_file_name = db_file_name
if pinning == 'auto':
pinning = ",".join([str(i) for i in range(self.threads)])
self.pinning = pinning self.pinning = pinning
self.f_padding = f_padding self.f_padding = f_padding
@wlb.member_callback @wlb.member_callback
def config(self, **kwargs): def config(self, **kwargs):
time_steps_for_128_cubed = 10 time_steps_for_128_cubed = 30
time_steps = int(128**3 / prod(self.block_size) * time_steps_for_128_cubed) time_steps = int(128**3 / prod(self.block_size) * time_steps_for_128_cubed * self.threads)
time_steps = max(10, time_steps) time_steps = max(10, time_steps)
cfg = { cfg = {
'DomainSetup': { 'DomainSetup': {
...@@ -183,14 +187,25 @@ def weak_scaling(): ...@@ -183,14 +187,25 @@ def weak_scaling():
def trt_two_field_benchmark(): def trt_two_field_benchmark():
scenarios = wlb.ScenarioManager() scenarios = wlb.ScenarioManager()
common = {'block_size': (300, 100, 100), common = {'block_size': (300, 100, 100),
'time_step_mode': 'two_field', 'time_step_mode': 'twoField',
'direct_comm': False, 'direct_comm': False,
'domain_decomposition_func': domain_decomposition_func_z_strong_scaling, 'domain_decomposition_func': domain_decomposition_func_z_strong_scaling,
'db_file_name': 'trt_two_field_bench.sqlite',
} }
scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='manualGeneric')) 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='manualD3Q19'))
scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='generated')) scenarios.add(BenchmarkScenario(**common, two_field_kernel_type='generated'))
def trt_single_field_benchmark():
scenarios = wlb.ScenarioManager()
common = {'block_size': (300, 100, 100),
'direct_comm': False,
'domain_decomposition_func': domain_decomposition_func_z_strong_scaling,
'db_file_name': 'trt_single_field_benchmark.sqlite',
}
for time_step_mode in ['aa', 'aaKernelOnly']:
scenarios.add(BenchmarkScenario(**common, time_step_mode=time_step_mode))
def padding_test(): def padding_test():
scenarios = wlb.ScenarioManager() scenarios = wlb.ScenarioManager()
...@@ -205,6 +220,7 @@ def padding_test(): ...@@ -205,6 +220,7 @@ def padding_test():
continue continue
scenarios.add(sc) scenarios.add(sc)
#trt_single_field_benchmark()
trt_two_field_benchmark()
#single_node_benchmark() #single_node_benchmark()
padding_test() #padding_test()
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