summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayed Adel <seiko@imavr.com>2022-03-18 07:12:45 +0200
committerSayed Adel <seiko@imavr.com>2023-01-29 13:02:39 +0200
commitc35f97f964a5ba263e5387ae0cc0a4393cb1da43 (patch)
tree224efb1e391baa5f55af8559bc011bece6d1d220
parent32af803704bff2cab984ded25d604b1caf703a94 (diff)
downloadnumpy-c35f97f964a5ba263e5387ae0cc0a4393cb1da43.tar.gz
BENCH, SIMD: Add strides in/out for complex benchmark
-rw-r--r--benchmarks/benchmarks/bench_ufunc_strides.py44
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):