import numpy as np import numpy.linalg as la import pyopencl as cl import pyopencl.array # noqa import pyopencl.clrandom # noqa import loopy as lp import sys from pyopencl.tools import ( # noqa pytest_generate_tests_for_pyopencl as pytest_generate_tests) from fixtures import LoopyFixture f = LoopyFixture() def test_matvec(ctx_factory): a = f.random_array(10, 10) b = f.random_array(10) c = f.mult_mat_vec(ctx_factory, a=a, b=b, alpha=1.0) assert la.norm(a@b - c, 2)/la.norm(c) < 1e-5 def test_compute_flux_derivatives(ctx_factory): ndim = 3 nvars = 5 nx = 10 ny = 10 nz = 10 states = f.random_array(nvars, nx+6, ny+6, nz+6) fluxes = f.random_array(nvars, ndim, nx+6, ny+6, nz+6) metrics = f.random_array(ndim, ndim, nx+6, ny+6, nz+6) metric_jacobians = f.random_array(nx+6, ny+6, nz+6) flux_derivatives = f.compute_flux_derivatives(ctx_factory, nvars=nvars, ndim=ndim, nx=nx, ny=ny, nz=nz, states=states, fluxes=fluxes, metrics=metrics, metric_jacobians=metric_jacobians) # This lets you run 'python test.py test_case(cl._csc)' without pytest. if __name__ == "__main__": if len(sys.argv) > 1: exec(sys.argv[1]) else: from pytest import main main([__file__])