From 625d5aa18446206cd6a00a52d8a2094948fd9d93 Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Wed, 11 Dec 2013 13:40:51 +0800 Subject: Accelerate utest. For some test cases which include more than one kernel, the current implementation always build the program for a new sub test case. That wastes a lot of time. This patch introduce a new macro MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM which has an extra parameter to specify whether to keep the previous program and avoid the extra build. The normal usage is: MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(fn1, true); MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(fn2, true); MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(fn3, true); MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(fn4, true); MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(fn5, false); The scenario is that the above fn1-5 are included in the same kernel file and we define the sub cases in the same cpp file. We already have some examples of this usage in the compiler_abs.cpp, compiler_abs_diff.cpp compiler_basic_arithmetic.cpp, compiler_vector_load_store.cpp, etc. This patch reduces 2/3 of the utests execution time. v2: should always destroy the program when run one specific test case. Signed-off-by: Zhigang Gong Reviewed-by: "Song, Ruiling" --- utests/compiler_vector_load_store.cpp | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'utests/compiler_vector_load_store.cpp') diff --git a/utests/compiler_vector_load_store.cpp b/utests/compiler_vector_load_store.cpp index f8a3dcb2..b44abc75 100644 --- a/utests/compiler_vector_load_store.cpp +++ b/utests/compiler_vector_load_store.cpp @@ -37,27 +37,27 @@ static void compiler_vector_load_store(int elemNum, const char *kernelName) OCL_UNMAP_BUFFER(1); } -#define compiler_vector_load_store(type, n, kernel_type) \ +#define compiler_vector_load_store(type, n, kernel_type, keep_program) \ static void compiler_vector_ ##kernel_type ##n ##_load_store(void)\ {\ compiler_vector_load_store(n, "test_" #kernel_type #n);\ }\ -MAKE_UTEST_FROM_FUNCTION(compiler_vector_ ## kernel_type ##n ##_load_store); +MAKE_UTEST_FROM_FUNCTION_KEEP_PROGRAM(compiler_vector_ ## kernel_type ##n ##_load_store, keep_program); -#define test_all_vector(type, kernel_type) \ - compiler_vector_load_store(type, 2, kernel_type) \ - compiler_vector_load_store(type, 3, kernel_type) \ - compiler_vector_load_store(type, 4, kernel_type) \ - compiler_vector_load_store(type, 8, kernel_type) \ - compiler_vector_load_store(type, 16, kernel_type) +#define test_all_vector(type, kernel_type, keep_program) \ + compiler_vector_load_store(type, 2, kernel_type, true) \ + compiler_vector_load_store(type, 3, kernel_type, true) \ + compiler_vector_load_store(type, 4, kernel_type, true) \ + compiler_vector_load_store(type, 8, kernel_type, true) \ + compiler_vector_load_store(type, 16, kernel_type, keep_program) -test_all_vector(int8_t, char) -test_all_vector(uint8_t, uchar) -test_all_vector(int16_t, short) -test_all_vector(uint16_t, ushort) -test_all_vector(int32_t, int) -test_all_vector(uint32_t, uint) -test_all_vector(float, float) -test_all_vector(double, double) -test_all_vector(int64_t, long) -test_all_vector(uint64_t, ulong) +test_all_vector(int8_t, char, true) +test_all_vector(uint8_t, uchar, true) +test_all_vector(int16_t, short, true) +test_all_vector(uint16_t, ushort, true) +test_all_vector(int32_t, int, true) +test_all_vector(uint32_t, uint, true) +test_all_vector(float, float, true) +test_all_vector(double, double, true) +test_all_vector(int64_t, long, true) +test_all_vector(uint64_t, ulong, false) -- cgit v1.2.1