diff --git a/pystencils/cpu/kernelcreation.py b/pystencils/cpu/kernelcreation.py index fef7355e5e9b7bee03fd40c5d4ccd9ec87ac480a..c99332ff0f5f4b181ec6f46ec0cf404c5d85359f 100644 --- a/pystencils/cpu/kernelcreation.py +++ b/pystencils/cpu/kernelcreation.py @@ -75,7 +75,7 @@ def create_kernel(assignments: NodeCollection, base_pointer_spec = config.base_pointer_specification if base_pointer_spec is None: - base_pointer_spec = [['spatialInner0'], ['spatialInner1']] if len(loop_order) >= 2 else [['spatialInner0']] + base_pointer_spec = [] 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/gpu/kernelcreation.py b/pystencils/gpu/kernelcreation.py index febf40f2c0e51352639acac82aed2c384d6cb995..f819b8f808ff5288a56bc8d4dc0dfd09f8354631 100644 --- a/pystencils/gpu/kernelcreation.py +++ b/pystencils/gpu/kernelcreation.py @@ -84,7 +84,7 @@ def create_cuda_kernel(assignments: NodeCollection, config: CreateKernelConfig): base_pointer_spec = config.base_pointer_specification if base_pointer_spec is None: - base_pointer_spec = [['spatialInner0']] + base_pointer_spec = [] base_pointer_info = {f.name: parse_base_pointer_info(base_pointer_spec, [2, 1, 0], f.spatial_dimensions, f.index_dimensions) for f in all_fields} diff --git a/pystencils_tests/test_base_pointer_specification.py b/pystencils_tests/test_base_pointer_specification.py index f980e08155364c505db67149ebb1b75b11c9e58e..48aba7562fec030b560afe1f9b05693a14fc38c7 100644 --- a/pystencils_tests/test_base_pointer_specification.py +++ b/pystencils_tests/test_base_pointer_specification.py @@ -49,16 +49,6 @@ def test_intermediate_base_pointer(target): ast = create_kernel(update, config=config) code = get_code_str(ast) - if target == Target.GPU: - # by default intermediate base pointers for y and z on GPU - assert "double * RESTRICT _data_x_10_20 = _data_x + _stride_x_1*ctr_1 + _stride_x_2*ctr_2;" in code - assert "double * RESTRICT _data_y_10_20 = _data_y + _stride_y_1*ctr_1 + _stride_y_2*ctr_2;" in code - assert "_data_x_10_20[_stride_x_0*ctr_0] = _data_y_10_20[_stride_y_0*ctr_0];" in code - else: - # by default intermediate base pointers for x and y on CPU - assert "double * RESTRICT _data_x_00 = _data_x + _stride_x_0*ctr_0;" in code - assert "double * RESTRICT _data_y_00 = _data_y + _stride_y_0*ctr_0;" in code - assert "double * RESTRICT _data_x_00_10 = _stride_x_1*ctr_1 + _data_x_00;" in code - assert "double * RESTRICT _data_y_00_10 = _stride_y_1*ctr_1 + _data_y_00;" in code - assert "_data_x_00_10[_stride_x_2*ctr_2] = _data_y_00_10[_stride_y_2*ctr_2];" in code - + # by default no intermediate base pointers are created + assert "_data_x[_stride_x_0*ctr_0 + _stride_x_1*ctr_1 + _stride_x_2*ctr_2] = " \ + "_data_y[_stride_y_0*ctr_0 + _stride_y_1*ctr_1 + _stride_y_2*ctr_2];" in code