summaryrefslogtreecommitdiff
path: root/kernels
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@intel.com>2014-08-27 10:33:42 +0800
committerZhigang Gong <zhigang.gong@intel.com>2014-09-03 12:29:01 +0800
commit44929d4847b7b5d0cf5929a3155b6193091c26b7 (patch)
tree66f660a0bfaf670889e3ffe65ff1e8aa3e7ac426 /kernels
parentbfa6135c9e7a53d2aab21c8c3257e85eb61b1212 (diff)
Add new vload benchmark/test case.
v2: refine the benchmark case and don't mix it with normal unit test cases. Signed-off-by: Zhigang Gong <zhigang.gong@intel.com> Reviewed-by: "Song, Ruiling" <ruiling.song@intel.com>
Diffstat (limited to 'kernels')
-rw-r--r--kernels/vload_bench.cl33
1 files changed, 33 insertions, 0 deletions
diff --git a/kernels/vload_bench.cl b/kernels/vload_bench.cl
new file mode 100644
index 00000000..c906c752
--- /dev/null
+++ b/kernels/vload_bench.cl
@@ -0,0 +1,33 @@
+#define VLOAD_BENCH(T, N, M) \
+__kernel void \
+vload_bench_##M ##T ##N(__global T* src, __global uint* dst, uint offset) \
+{ \
+ int id = (int)get_global_id(0); \
+ uint ##N srcV = 0; \
+ for(int i = 0; i < M; i++) \
+ { \
+ srcV += convert_uint ##N(vload ##N(id + (i & 0xFFFF), src + offset)); \
+ } \
+ vstore ##N(srcV, id, dst);\
+ /*if (id < 16)*/ \
+ /*printf("id %d %d %d\n", id, srcV.s0, srcV.s1);*/ \
+}
+
+#define VLOAD_BENCH_ALL_VECTOR(T, N_ITERATIONS) \
+ VLOAD_BENCH(T, 2, N_ITERATIONS) \
+ VLOAD_BENCH(T, 3, N_ITERATIONS) \
+ VLOAD_BENCH(T, 4, N_ITERATIONS) \
+ VLOAD_BENCH(T, 8, N_ITERATIONS) \
+ VLOAD_BENCH(T, 16, N_ITERATIONS)
+
+#define VLOAD_BENCH_ALL_TYPES(N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(uchar, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(char, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(ushort, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(short, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(uint, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(int, N_ITERATIONS) \
+ VLOAD_BENCH_ALL_VECTOR(float, N_ITERATIONS)
+
+VLOAD_BENCH_ALL_TYPES(1)
+VLOAD_BENCH_ALL_TYPES(10000)