Skip to content
Snippets Groups Projects
test_create_kernel_config.py 1.25 KiB
Newer Older
Jan Hönig's avatar
Jan Hönig committed
import numpy as np
Markus Holzer's avatar
Markus Holzer committed
import sympy as sp
Jan Hönig's avatar
Jan Hönig committed
import pystencils as ps
Markus Holzer's avatar
Markus Holzer committed
import pystencils.config
Jan Hönig's avatar
Jan Hönig committed


def test_create_kernel_config():
Markus Holzer's avatar
Markus Holzer committed
    c = pystencils.config.CreateKernelConfig()
Jan Hönig's avatar
Jan Hönig committed
    assert c.backend == ps.Backend.C
    assert c.target == ps.Target.CPU

Markus Holzer's avatar
Markus Holzer committed
    c = pystencils.config.CreateKernelConfig(target=ps.Target.GPU)
Jan Hönig's avatar
Jan Hönig committed
    assert c.backend == ps.Backend.CUDA

Markus Holzer's avatar
Markus Holzer committed
    c = pystencils.config.CreateKernelConfig(backend=ps.Backend.CUDA)
Jan Hönig's avatar
Jan Hönig committed
    assert c.target == ps.Target.CPU
    assert c.backend == ps.Backend.CUDA
Jan Hönig's avatar
Jan Hönig committed


def test_kernel_decorator_config():
Markus Holzer's avatar
Markus Holzer committed
    config = pystencils.config.CreateKernelConfig()
Jan Hönig's avatar
Jan Hönig committed
    a, b, c = ps.fields(a=np.ones(100), b=np.ones(100), c=np.ones(100))

    @ps.kernel_config(config)
    def test():
        a[0] @= b[0] + c[0]

    ps.create_kernel(**test)
Markus Holzer's avatar
Markus Holzer committed


def test_kernel_decorator2():
    h = sp.symbols("h")
    dtype = "float64"

    src, dst = ps.fields(f"src, src_tmp: {dtype}[3D]")

    @ps.kernel
    def kernel_func():
        dst[0, 0, 0] @= (src[1, 0, 0] + src[-1, 0, 0]
                         + src[0, 1, 0] + src[0, -1, 0]
                         + src[0, 0, 1] + src[0, 0, -1]) / (6 * h ** 2)

    # assignments = ps.assignment_from_stencil(stencil, src, dst, normalization_factor=2)
    ast = ps.create_kernel(kernel_func)

    code = ps.get_code_str(ast)