def test_unary_ops(filter_str, unary_op, input_arrays, get_shape, capfd): a = input_arrays[0] op, name = unary_op if name != "argsort" and name != "copy": a = np.reshape(a, get_shape) if name == "cumprod" and (filter_str == "opencl:cpu:0" or a.dtype == np.int32 or is_gen12(filter_str)): pytest.skip() if name == "cumsum" and (filter_str == "opencl:cpu:0" or a.dtype == np.int32 or is_gen12(filter_str)): pytest.skip() if name == "mean" and is_gen12(filter_str): pytest.skip() if name == "argmax" and is_gen12(filter_str): pytest.skip() actual = np.empty(shape=a.shape, dtype=a.dtype) expected = np.empty(shape=a.shape, dtype=a.dtype) f = njit(op) device = dpctl.SyclDevice(filter_str) with dpctl.device_context(device), dpnp_debug(): actual = f(a) captured = capfd.readouterr() assert "dpnp implementation" in captured.out expected = op(a) np.testing.assert_allclose(actual, expected, rtol=1e-3, atol=0)
def test_trigonometric_fn(filter_str, trig_op, input_arrays): # FIXME: Why does archcosh fail on Gen12 discrete graphics card? if trig_op == "arccosh" and is_gen12(filter_str): pytest.skip() a, b = input_arrays trig_fn = getattr(np, trig_op) actual = np.empty(shape=a.shape, dtype=a.dtype) expected = np.empty(shape=a.shape, dtype=a.dtype) if trig_op == "arctan2": @njit def f(a, b): return trig_fn(a, b) device = dpctl.SyclDevice(filter_str) with dpctl.device_context(device), assert_auto_offloading(): actual = f(a, b) expected = trig_fn(a, b) else: @njit def f(a): return trig_fn(a) device = dpctl.SyclDevice(filter_str) with dpctl.device_context(device), assert_auto_offloading(): actual = f(a) expected = trig_fn(a) np.testing.assert_allclose(actual, expected, rtol=1e-5, atol=0)
def test_unary_ops(filter_str, unary_op, input_arrays): # FIXME: Why does sign fail on Gen12 discrete graphics card? skip_ops = ["sign", "log", "log2", "log10", "expm1"] if unary_op in skip_ops and is_gen12(filter_str): pytest.skip() a = input_arrays[0] uop = getattr(np, unary_op) actual = np.empty(shape=a.shape, dtype=a.dtype) expected = np.empty(shape=a.shape, dtype=a.dtype) @njit def f(a): return uop(a) device = dpctl.SyclDevice(filter_str) with dpctl.device_context(device), assert_auto_offloading(): actual = f(a) expected = uop(a) np.testing.assert_allclose(actual, expected, rtol=1e-5, atol=0)
def test_unary_ops(filter_str, unary_op, input_array, get_shape, capfd): a = input_array a = np.reshape(a, get_shape) op, name = unary_op if (name == "cumprod" or name == "cumsum") and ( filter_str == "opencl:cpu:0" or is_gen12(filter_str) ): pytest.skip() actual = np.empty(shape=a.shape, dtype=a.dtype) expected = np.empty(shape=a.shape, dtype=a.dtype) f = njit(op) device = dpctl.SyclDevice(filter_str) with dpctl.device_context(device), dpnp_debug(): actual = f(a) captured = capfd.readouterr() assert "dpnp implementation" in captured.out expected = op(a) max_abs_err = np.sum(actual - expected) assert max_abs_err < 1e-4