Newer
Older
import pyopencl.tools # noqa
Timothy A. Smith
committed
import pytest
from pyopencl.tools import ( # noqa
pytest_generate_tests_for_pyopencl
as pytest_generate_tests)
import comparison_fixtures as compare
import setup_fixtures as setup
import kernel_fixtures as kernel
a = setup.random_array(10, 10)
b = setup.random_array(10)
c = kernel.mult_mat_vec(ctx_factory, a=a, b=b, alpha=1.0)
compare.arrays(a@b, c)
Kaushik Kulkarni
committed
def test_compute_flux_derivatives(ctx_factory):
params = setup.FluxDerivativeParams(ndim=3, nvars=5, nx=10, ny=10, nz=10)
arrays = setup.random_flux_derivative_arrays(params)
kernel.compute_flux_derivatives(ctx_factory, params, arrays)
Kaushik Kulkarni
committed
@pytest.mark.skip("slow")
def test_compute_flux_derivatives_gpu(ctx_factory):
Timothy A. Smith
committed
prg = fixtures.get_gpu_transformed_weno()
ndim = 3
nvars = 5
nx = 10
ny = 10
nz = 10
Timothy A. Smith
committed
states = fixtures.f_array(queue, nvars, nx+6, ny+6, nz+6)
fluxes = fixtures.f_array(queue, nvars, ndim, nx+6, ny+6, nz+6)
metrics = fixtures.f_array(queue, ndim, ndim, nx+6, ny+6, nz+6)
metric_jacobians = fixtures.f_array(queue, nx+6, ny+6, nz+6)
flux_derivatives_dev = cl.array.empty(queue, (nvars, ndim, nx+6, ny+6,
nz+6), dtype=np.float32, order="F")
prg = prg.copy(target=lp.PyOpenCLTarget(queue.device))
with open("gen-code.cl", "w") as outf:
outf.write(lp.generate_code_v2(prg).device_code())
prg = lp.set_options(prg, no_numpy=True)
prg(queue, nvars=nvars, ndim=ndim,
states=states, fluxes=fluxes, metrics=metrics,
metric_jacobians=metric_jacobians,
flux_derivatives=flux_derivatives_dev)
# This lets you run 'python test.py test_case(cl._csc)' without pytest.
if __name__ == "__main__":
if len(sys.argv) > 1:
Timothy A. Smith
committed
logging.basicConfig(level="INFO")
exec(sys.argv[1])
else:
from pytest import main
main([__file__])