diff options
| author | Sayed Adel <seiko@imavr.com> | 2022-03-18 07:12:45 +0200 |
|---|---|---|
| committer | Sayed Adel <seiko@imavr.com> | 2023-01-29 13:02:39 +0200 |
| commit | c35f97f964a5ba263e5387ae0cc0a4393cb1da43 (patch) | |
| tree | 224efb1e391baa5f55af8559bc011bece6d1d220 | |
| parent | 32af803704bff2cab984ded25d604b1caf703a94 (diff) | |
| download | numpy-c35f97f964a5ba263e5387ae0cc0a4393cb1da43.tar.gz | |
BENCH, SIMD: Add strides in/out for complex benchmark
| -rw-r--r-- | benchmarks/benchmarks/bench_ufunc_strides.py | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/benchmarks/benchmarks/bench_ufunc_strides.py b/benchmarks/benchmarks/bench_ufunc_strides.py index f80bf90f9..2cebce5e0 100644 --- a/benchmarks/benchmarks/bench_ufunc_strides.py +++ b/benchmarks/benchmarks/bench_ufunc_strides.py @@ -102,45 +102,59 @@ cmplx_bfuncs = ['add', cmplxstride = [1, 2, 4] cmplxdtype = ['F', 'D'] -class AVX_cmplx_arithmetic(Benchmark): - params = [cmplx_bfuncs, cmplxstride, cmplxdtype] - param_names = ['bfunc', 'stride', 'dtype'] +class BinaryComplex(Benchmark): + params = [cmplx_bfuncs, cmplxstride, cmplxstride, cmplxstride, cmplxdtype] + param_names = ['bfunc', 'stride_in0', 'stride_in1' 'stride_out', 'dtype'] timeout = 10 - def setup(self, bfuncname, stride, dtype): + def setup(self, bfuncname, stride_in0, stride_in1, stride_out, dtype): np.seterr(all='ignore') try: self.f = getattr(np, bfuncname) except AttributeError: raise NotImplementedError(f"No bfunc {bfuncname} found") from None N = 10000 - self.arr1 = np.ones(stride*N, dtype) - self.arr2 = np.ones(stride*N, dtype) + self.arr1 = np.ones(stride_in0*N, dtype) + self.arr2 = np.ones(stride_in1*N, dtype) + self.arr_out = np.empty(stride_out*N, dtype) - def time_ufunc(self, bfuncname, stride, dtype): - self.f(self.arr1[::stride], self.arr2[::stride]) + def time_ufunc(self, bfuncname, stride_in0, stride_in1, stride_out, + dtype): + self.f(self.arr1[::stride_in0], self.arr2[::stride_in1], + self.arr_out[::stride_out]) + + def time_ufunc_scalar_in0(self, bfuncname, stride_in0, stride_in1, + stride_out, dtype): + self.f(self.arr1[0], self.arr2[::stride_in1], + self.arr_out[::stride_out]) + + def time_ufunc_scalar_in1(self, bfuncname, stride_in0, stride_in1, + stride_out, dtype): + self.f(self.arr1[::stride_in0], self.arr2[0], + self.arr_out[::stride_out]) cmplx_ufuncs = ['reciprocal', 'absolute', 'square', 'conjugate'] -class AVX_cmplx_funcs(Benchmark): - params = [cmplx_ufuncs, cmplxstride, cmplxdtype] - param_names = ['bfunc', 'stride', 'dtype'] +class UnaryComplex(Benchmark): + params = [cmplx_ufuncs, cmplxstride, cmplxstride, cmplxdtype] + param_names = ['bfunc', 'stride_in', 'stride_out', 'dtype'] timeout = 10 - def setup(self, bfuncname, stride, dtype): + def setup(self, bfuncname, stride_in, stride_out, dtype): np.seterr(all='ignore') try: self.f = getattr(np, bfuncname) except AttributeError: raise NotImplementedError(f"No bfunc {bfuncname} found") from None N = 10000 - self.arr1 = np.ones(stride*N, dtype) + self.arr1 = np.ones(stride_in*N, dtype) + self.arr_out = np.empty(stride_out*N, dtype) - def time_ufunc(self, bfuncname, stride, dtype): - self.f(self.arr1[::stride]) + def time_ufunc(self, bfuncname, stride_in, stride_out, dtype): + self.f(self.arr1[::stride_in], self.arr_out[::stride_out]) class Mandelbrot(Benchmark): def f(self,z): |
