summaryrefslogtreecommitdiff
path: root/utests/utest.cpp
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@intel.com>2013-12-11 13:40:51 +0800
committerZhigang Gong <zhigang.gong@intel.com>2013-12-16 09:20:46 +0800
commit625d5aa18446206cd6a00a52d8a2094948fd9d93 (patch)
treed8e71909e55cd012591472b93e5e5825d97df21d /utests/utest.cpp
parent4957110d5238b999c78b382bb1bf92092757447f (diff)
downloadbeignet-625d5aa18446206cd6a00a52d8a2094948fd9d93.tar.gz
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 <zhigang.gong@intel.com> Reviewed-by: "Song, Ruiling" <ruiling.song@intel.com>
Diffstat (limited to 'utests/utest.cpp')
-rw-r--r--utests/utest.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/utests/utest.cpp b/utests/utest.cpp
index 18d10e84..6d51598a 100644
--- a/utests/utest.cpp
+++ b/utests/utest.cpp
@@ -32,7 +32,8 @@ using namespace std;
vector<UTest> *UTest::utestList = NULL;
void releaseUTestList(void) { delete UTest::utestList; }
-UTest::UTest(Function fn, const char *name, bool haveIssue) : fn(fn), name(name), haveIssue(haveIssue) {
+UTest::UTest(Function fn, const char *name, bool haveIssue, bool needDestroyProgram)
+ : fn(fn), name(name), haveIssue(haveIssue), needDestroyProgram(needDestroyProgram) {
if (utestList == NULL) {
utestList = new vector<UTest>;
atexit(releaseUTestList);
@@ -57,7 +58,7 @@ void UTest::run(const char *name) {
std::cout << utest.name << ":" << std::endl;
(utest.fn)();
std::cout << std::endl;
- cl_kernel_destroy();
+ cl_kernel_destroy(true);
cl_buffer_destroy();
}
}
@@ -71,7 +72,7 @@ void UTest::runAll(void) {
std::cout << utest.name << ":" << std::endl;
(utest.fn)();
std::cout << std::endl;
- cl_kernel_destroy();
+ cl_kernel_destroy(utest.needDestroyProgram);
cl_buffer_destroy();
}
}
@@ -84,7 +85,7 @@ void UTest::runAllNoIssue(void) {
std::cout << utest.name << ":" << std::endl;
(utest.fn)();
std::cout << std::endl;
- cl_kernel_destroy();
+ cl_kernel_destroy(utest.needDestroyProgram);
cl_buffer_destroy();
}
}