def pipeline_arithm_ops_cpu(source): data = fn.external_source(source=source, layout="HWC") processed = (data * 2, data + 2, data - 2, data / 2, data // 2, data ** 2, data == 2, data != 2, data < 2, data <= 2, data > 2, data >= 2, data & 2, data | 2, data ^ 2, dmath.abs(data), dmath.fabs(data), dmath.floor(data), dmath.ceil(data), dmath.pow(data, 2), dmath.fpow(data, 1.5), dmath.min(data, 2), dmath.max(data, 50), dmath.clamp(data, 10, 50), dmath.sqrt(data), dmath.rsqrt(data), dmath.cbrt(data), dmath.exp(data), dmath.exp(data), dmath.log(data), dmath.log2(data), dmath.log10(data), dmath.sin(data), dmath.cos(data), dmath.tan(data), dmath.asin(data), dmath.acos(data), dmath.atan(data), dmath.atan2(data, 3), dmath.sinh(data), dmath.cosh(data), dmath.tanh(data), dmath.asinh(data), dmath.acosh(data), dmath.atanh(data)) return processed
def test_arithm_ops_cpu(): pipe = Pipeline(batch_size=batch_size, num_threads=4, device_id=None) data = fn.external_source(source=get_data, layout="HWC") processed = [ data * 2, data + 2, data - 2, data / 2, data // 2, data**2, data == 2, data != 2, data < 2, data <= 2, data > 2, data >= 2, data & 2, data | 2, data ^ 2, dmath.abs(data), dmath.fabs(data), dmath.floor(data), dmath.ceil(data), dmath.pow(data, 2), dmath.fpow(data, 1.5), dmath.min(data, 2), dmath.max(data, 50), dmath.clamp(data, 10, 50), dmath.sqrt(data), dmath.rsqrt(data), dmath.cbrt(data), dmath.exp(data), dmath.exp(data), dmath.log(data), dmath.log2(data), dmath.log10(data), dmath.sin(data), dmath.cos(data), dmath.tan(data), dmath.asin(data), dmath.acos(data), dmath.atan(data), dmath.atan2(data, 3), dmath.sinh(data), dmath.cosh(data), dmath.tanh(data), dmath.asinh(data), dmath.acosh(data), dmath.atanh(data) ] pipe.set_outputs(*processed) pipe.build() for _ in range(3): pipe.run()
def one_range(*types): return [(-2, 2) if np.issubdtype(t, np.integer) else (-1.5, 1.5) for t in types] # Limit the range so we do not end with comparing just the infinities in results. def limited_range(*types): return [(-30, 30) for _ in types] def pow_range(*_): return [(-15, 15), (-4, 4)] def default_range(*types): return [None for _ in types] math_function_operations = [ ((lambda x: math.sqrt(x)), (lambda x: np.sqrt(x)), "sqrt", pos_range, 1e-6), ((lambda x: math.rsqrt(x)), (lambda x: 1.0 / np.sqrt(x)), "rsqrt", pos_range, 1e-5), ((lambda x: math.cbrt(x)), (lambda x: np.cbrt(x)), "cbrt", default_range, 1e-6), ((lambda x: math.exp(x)), (lambda x: np.exp(x)), "exp", limited_range, 1e-6), ((lambda x: math.log(x)), (lambda x: np.log(x)), "log", pos_range, 1e-6), ((lambda x: math.log2(x)), (lambda x: np.log2(x)), "log2", pos_range, 1e-6), ((lambda x: math.log10(x)), (lambda x: np.log10(x)), "log10", pos_range, 1e-6), ((lambda x: math.fabs(x)), (lambda x: np.fabs(x)), "fabs", default_range, 1e-6), ((lambda x: math.floor(x)), (lambda x: np.floor(x)), "floor", default_range, 1e-6), ((lambda x: math.ceil(x)), (lambda x: np.ceil(x)), "ceil", default_range, 1e-6), ((lambda x: math.sin(x)), (lambda x: np.sin(x)), "sin", default_range, 1e-6), ((lambda x: math.cos(x)), (lambda x: np.cos(x)), "cos", default_range, 1e-6), ((lambda x: math.tan(x)), (lambda x: np.tan(x)), "tan", default_range, 1e-6), ((lambda x: math.asin(x)), (lambda x: np.arcsin(x)), "asin", one_range, 1e-6), ((lambda x: math.acos(x)), (lambda x: np.arccos(x)), "acos", one_range, 1e-6), ((lambda x: math.atan(x)), (lambda x: np.arctan(x)), "atan", default_range, 1e-6), ((lambda x: math.sinh(x)), (lambda x: np.sinh(x)), "sinh", default_range, 1e-6),
# Limit the range so we do not end with comparing just the infinities in results. return [(-30, 30) for _ in types] def pow_range(*_): return [(-15, 15), (-4, 4)] def default_range(*types): return [None for _ in types] math_function_operations = [ ((lambda x: math.sqrt(x)), (lambda x: np.sqrt(x)), "sqrt", pos_range, 1e-6), ((lambda x: math.rsqrt(x)), (lambda x: 1.0 / np.sqrt(x)), "rsqrt", pos_range, 1e-5), ((lambda x: math.cbrt(x)), (lambda x: np.cbrt(x)), "cbrt", default_range, 1e-6), ((lambda x: math.exp(x)), (lambda x: np.exp(x)), "exp", limited_range, 1e-6), ((lambda x: math.log(x)), (lambda x: np.log(x)), "log", pos_range, 1e-6), ((lambda x: math.log2(x)), (lambda x: np.log2(x)), "log2", pos_range, 1e-6), ((lambda x: math.log10(x)), (lambda x: np.log10(x)), "log10", pos_range, 1e-6), ((lambda x: math.fabs(x)), (lambda x: np.fabs(x)), "fabs", default_range, 1e-6), ((lambda x: math.floor(x)), (lambda x: np.floor(x)), "floor", default_range, 1e-6), ((lambda x: math.ceil(x)), (lambda x: np.ceil(x)), "ceil", default_range,