diff options
author | Sayed Adel <seiko@imavr.com> | 2021-12-31 04:15:14 +0200 |
---|---|---|
committer | Sayed Adel <seiko@imavr.com> | 2021-12-31 04:50:03 +0200 |
commit | 91a4b980b2381c77faede2f936da4bc9831802cd (patch) | |
tree | 390e5e3c290d2e360289cd84d182c5f8c5110185 /benchmarks | |
parent | 0d171288ecd9ccfee739b15faa58de8243ae4a53 (diff) | |
download | numpy-91a4b980b2381c77faede2f936da4bc9831802cd.tar.gz |
BENCH: cover integer max/min and fmax/fmin tests
also covers variant of strides sizes
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/benchmarks/bench_reduce.py | 18 | ||||
-rw-r--r-- | benchmarks/benchmarks/bench_ufunc_strides.py | 35 |
2 files changed, 40 insertions, 13 deletions
diff --git a/benchmarks/benchmarks/bench_reduce.py b/benchmarks/benchmarks/bench_reduce.py index 7b05f4fcc..81316c492 100644 --- a/benchmarks/benchmarks/bench_reduce.py +++ b/benchmarks/benchmarks/bench_reduce.py @@ -46,7 +46,8 @@ class AnyAll(Benchmark): class MinMax(Benchmark): - params = [np.float32, np.float64, np.intp] + params = [np.int8, np.uint8, np.int16, np.uint16, np.int32, np.uint32, + np.int64, np.uint64, np.float32, np.float64, np.intp] param_names = ['dtype'] def setup(self, dtype): @@ -58,8 +59,21 @@ class MinMax(Benchmark): def time_max(self, dtype): np.max(self.d) +class FMinMax(Benchmark): + params = [np.float32, np.float64] + param_names = ['dtype'] + + def setup(self, dtype): + self.d = np.ones(20000, dtype=dtype) + + def time_min(self, dtype): + np.fmin.reduce(self.d) + + def time_max(self, dtype): + np.fmax.reduce(self.d) + class ArgMax(Benchmark): - params = [np.float32, bool] + params = [np.float32, np.float64, bool] param_names = ['dtype'] def setup(self, dtype): diff --git a/benchmarks/benchmarks/bench_ufunc_strides.py b/benchmarks/benchmarks/bench_ufunc_strides.py index 75aa510a6..b751e4804 100644 --- a/benchmarks/benchmarks/bench_ufunc_strides.py +++ b/benchmarks/benchmarks/bench_ufunc_strides.py @@ -44,27 +44,40 @@ class AVX_UFunc_log(Benchmark): def time_log(self, stride, dtype): np.log(self.arr[::stride]) -avx_bfuncs = ['maximum', - 'minimum'] -class AVX_BFunc(Benchmark): +binary_ufuncs = [ + 'maximum', 'minimum', 'fmax', 'fmin' +] +binary_dtype = ['f', 'd'] - params = [avx_bfuncs, dtype, stride] - param_names = ['avx_based_bfunc', 'dtype', 'stride'] +class Binary(Benchmark): + param_names = ['ufunc', 'stride_in0', 'stride_in1', 'stride_out', 'dtype'] + params = [binary_ufuncs, stride, stride, stride_out, binary_dtype] timeout = 10 - def setup(self, ufuncname, dtype, stride): + def setup(self, ufuncname, stride_in0, stride_in1, stride_out, dtype): np.seterr(all='ignore') try: self.f = getattr(np, ufuncname) except AttributeError: raise NotImplementedError(f"No ufunc {ufuncname} found") from None - N = 10000 - self.arr1 = np.array(np.random.rand(stride*N), dtype=dtype) - self.arr2 = np.array(np.random.rand(stride*N), dtype=dtype) + N = 100000 + self.arr1 = np.array(np.random.rand(stride_in0*N), dtype=dtype) + self.arr2 = np.array(np.random.rand(stride_in1*N), dtype=dtype) + self.arr_out = np.empty(stride_out*N, dtype) - def time_ufunc(self, ufuncname, dtype, stride): - self.f(self.arr1[::stride], self.arr2[::stride]) + def time_ufunc(self, ufuncname, stride_in0, stride_in1, stride_out, dtype): + self.f(self.arr1[::stride_in0], self.arr2[::stride_in1], + self.arr_out[::stride_out]) + + +binary_int_ufuncs = ['maximum', 'minimum'] +binary_int_dtype = ['b', 'B', 'h', 'H', 'i', 'I', 'l', 'L', 'q', 'Q'] + +class BinaryInt(Binary): + + param_names = ['ufunc', 'stride_in0', 'stride_in1', 'stride_out', 'dtype'] + params = [binary_int_ufuncs, stride, stride, stride_out, binary_int_dtype] class AVX_ldexp(Benchmark): |