From 262be774033a7ebd93cd342685d6ad5622ef41ed Mon Sep 17 00:00:00 2001 From: Markus Holzer <markus.holzer@fau.de> Date: Tue, 12 Sep 2023 12:01:24 +0200 Subject: [PATCH] Activate base pointer for NT stores --- pystencils/cpu/kernelcreation.py | 2 ++ pystencils_tests/test_vectorization.py | 3 +-- pystencils_tests/test_vectorization_specific.py | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pystencils/cpu/kernelcreation.py b/pystencils/cpu/kernelcreation.py index c99332ff..e58641e0 100644 --- a/pystencils/cpu/kernelcreation.py +++ b/pystencils/cpu/kernelcreation.py @@ -76,6 +76,8 @@ def create_kernel(assignments: NodeCollection, base_pointer_spec = config.base_pointer_specification if base_pointer_spec is None: base_pointer_spec = [] + if config.cpu_vectorize_info and config.cpu_vectorize_info.get('nontemporal'): + base_pointer_spec = [['spatialInner0'], ['spatialInner1']] if len(loop_order) >= 2 else [['spatialInner0']] base_pointer_info = {field.name: parse_base_pointer_info(base_pointer_spec, loop_order, field.spatial_dimensions, field.index_dimensions) for field in fields_without_buffers} diff --git a/pystencils_tests/test_vectorization.py b/pystencils_tests/test_vectorization.py index 071bc240..302d8cbd 100644 --- a/pystencils_tests/test_vectorization.py +++ b/pystencils_tests/test_vectorization.py @@ -141,8 +141,7 @@ def test_aligned_and_nt_stores(openmp, instruction_set=instruction_set): 'assume_inner_stride_one': True} update_rule = [ps.Assignment(f.center(), 0.25 * (g[-1, 0] + g[1, 0] + g[0, -1] + g[0, 1]))] # Without the base pointer spec, the inner store is not aligned - config = pystencils.config.CreateKernelConfig(target=dh.default_target, cpu_vectorize_info=opt, cpu_openmp=openmp, - base_pointer_specification=[['spatialInner0']]) + config = pystencils.config.CreateKernelConfig(target=dh.default_target, cpu_vectorize_info=opt, cpu_openmp=openmp) ast = ps.create_kernel(update_rule, config=config) if instruction_set in ['sse'] or instruction_set.startswith('avx'): assert 'stream' in ast.instruction_set diff --git a/pystencils_tests/test_vectorization_specific.py b/pystencils_tests/test_vectorization_specific.py index 610f671e..46e13c2d 100644 --- a/pystencils_tests/test_vectorization_specific.py +++ b/pystencils_tests/test_vectorization_specific.py @@ -116,8 +116,7 @@ def test_alignment_and_correct_ghost_layers(gl_field, gl_kernel, instruction_set opt = {'instruction_set': instruction_set, 'assume_aligned': True, 'nontemporal': True, 'assume_inner_stride_one': True} config = pystencils.config.CreateKernelConfig(target=dh.default_target, - cpu_vectorize_info=opt, ghost_layers=gl_kernel, - base_pointer_specification=[['spatialInner0']]) + cpu_vectorize_info=opt, ghost_layers=gl_kernel) ast = ps.create_kernel(update_rule, config=config) kernel = ast.compile() if gl_kernel != gl_field: -- GitLab