Skip to content
Snippets Groups Projects
Commit 2d108a2e authored by Markus Holzer's avatar Markus Holzer
Browse files

Added hardware specific vectorization tests

parent 063c10d0
No related branches found
No related tags found
1 merge request!192FIX pystencils install bug
Pipeline #28469 passed
......@@ -6,9 +6,6 @@ from pystencils.backends.simd_instruction_sets import get_supported_instruction_
from pystencils.cpu.vectorization import vectorize
from pystencils.fast_approximation import insert_fast_sqrts, insert_fast_divisions
from pystencils.transformations import replace_inner_stride_with_one
from pystencils.backends.simd_instruction_sets import get_supported_instruction_sets
supported_instruction_sets = get_supported_instruction_sets() if get_supported_instruction_sets() else []
def test_vector_type_propagation():
......@@ -30,8 +27,6 @@ def test_vector_type_propagation():
np.testing.assert_equal(dst[1:-1, 1:-1], 2 * 10.0 + 3)
@pytest.mark.skipif('avx' in supported_instruction_sets,
reason="This test case is specifically for AVX architectures")
def test_inplace_update():
shape = (9, 9, 3)
arr = np.ones(shape, order='f')
......@@ -47,7 +42,7 @@ def test_inplace_update():
f1 @= 2 * s.tmp0
f2 @= 2 * s.tmp0
ast = ps.create_kernel(update_rule, cpu_vectorize_info={'instruction_set': 'avx'})
ast = ps.create_kernel(update_rule, cpu_vectorize_info=True)
kernel = ast.compile()
kernel(f=arr)
np.testing.assert_equal(arr, 2)
......
import pytest
import numpy as np
import sympy as sp
import pystencils as ps
from pystencils.backends.simd_instruction_sets import get_supported_instruction_sets
from pystencils.cpu.vectorization import vectorize
from pystencils.fast_approximation import insert_fast_sqrts, insert_fast_divisions
from pystencils.transformations import replace_inner_stride_with_one
from pystencils.backends.simd_instruction_sets import get_supported_instruction_sets
supported_instruction_sets = get_supported_instruction_sets() if get_supported_instruction_sets() else []
@pytest.mark.parametrize('instruction_set', supported_instruction_sets)
def test_vectorisation_varying_arch(instruction_set):
shape = (9, 9, 3)
arr = np.ones(shape, order='f')
@ps.kernel
def update_rule(s):
f = ps.fields("f(3) : [2D]", f=arr)
s.tmp0 @= f(0)
s.tmp1 @= f(1)
s.tmp2 @= f(2)
f0, f1, f2 = f(0), f(1), f(2)
f0 @= 2 * s.tmp0
f1 @= 2 * s.tmp0
f2 @= 2 * s.tmp0
ast = ps.create_kernel(update_rule, cpu_vectorize_info={'instruction_set': instruction_set})
kernel = ast.compile()
kernel(f=arr)
np.testing.assert_equal(arr, 2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment