summaryrefslogtreecommitdiff
path: root/MPBenchmarks
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2014-10-23 13:09:21 +0800
committerZhenyu Wang <zhenyuw@linux.intel.com>2014-10-23 13:09:21 +0800
commitfd0204918b920077a14298b00a64bf38f08fb2d3 (patch)
treefe627ef9955d46b2086247e9ea964275bbe056e2 /MPBenchmarks
parent68e519cdb3e28459ffc53e490b0c8288cd579472 (diff)
Fix implicit Event leak
Not return Event object but handle cl event in function itself. Fix implicit event leak. Now it does wait then release for cl_event. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Diffstat (limited to 'MPBenchmarks')
-rw-r--r--MPBenchmarks/ArithmeticTasks.cpp10
-rw-r--r--MPBenchmarks/MemoryTasks.cpp23
-rw-r--r--MPBenchmarks/appMain.cpp4
3 files changed, 18 insertions, 19 deletions
diff --git a/MPBenchmarks/ArithmeticTasks.cpp b/MPBenchmarks/ArithmeticTasks.cpp
index 670f1d6..61ef40d 100644
--- a/MPBenchmarks/ArithmeticTasks.cpp
+++ b/MPBenchmarks/ArithmeticTasks.cpp
@@ -49,15 +49,15 @@ double AddNGPUTask::run(int workgroupSize,size_t sz)
// Initialize A and B
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(rand() & 0xFF);
- if (!q->writeBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(rand() & 0xFF);
- if (!q->writeBuffer(b,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(b,true,0,sz,buf) == CL_FALSE) goto END;
// Run tests, double nOps until min time is reached
kernel->setArg(0,a);
kernel->setArg(1,b);
kernel->setArg(2,y);
- if (!q->execKernel1(kernel,n,workgroupSize).isValid()) goto END;
+ if (q->execKernel1(kernel,n,workgroupSize) == CL_FALSE) goto END;
for (int nOps = 1; ; nOps <<= 1)
{
double t0 = getT();
@@ -107,13 +107,13 @@ double Mul1GPUTask::run(int workgroupSize,size_t sz)
// Initialize A
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(rand() & 0xFF);
- if (!q->writeBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
// Run tests, double nOps until min time is reached
kernel->setArg(0,kk);
kernel->setArg(1,a);
kernel->setArg(2,y);
- if (!q->execKernel1(kernel,n,workgroupSize).isValid()) goto END;
+ if (q->execKernel1(kernel,n,workgroupSize)== CL_FALSE) goto END;
for (int nOps = 1; ; nOps <<= 1)
{
double t0 = getT();
diff --git a/MPBenchmarks/MemoryTasks.cpp b/MPBenchmarks/MemoryTasks.cpp
index c6c0fb2..e32036d 100644
--- a/MPBenchmarks/MemoryTasks.cpp
+++ b/MPBenchmarks/MemoryTasks.cpp
@@ -40,9 +40,10 @@ double CopyGPUTask::run(int workgroupSize,size_t sz)
// Initialize A and check errors
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(i & 0xFF);
- if (!q->writeBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)0;
- if (!q->readBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->readBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
+
ok = true;
// check write+read loop
@@ -53,11 +54,11 @@ double CopyGPUTask::run(int workgroupSize,size_t sz)
if (b != 0)
{
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(i & 0xFF);
- if (!q->writeBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)0;
- if (!q->writeBuffer(b,true,0,sz,buf).isValid()) goto END;
- if (!q->copyBuffer(a,b,0,0,sz).isValid()) goto END;
- if (!q->readBuffer(b,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(b,true,0,sz,buf) == CL_FALSE) goto END;
+ if (q->copyBuffer(a,b,0,0,sz) == CL_FALSE) goto END;
+ if (q->readBuffer(b,true,0,sz,buf) == CL_FALSE) goto END;
for (size_t i=0;i<sz;i++) if (buf[i] != (unsigned char)(i & 0xFF)) ok = false;
if (!ok) { fprintf(stderr,"write+copy+read failed\n"); goto END; }
}
@@ -74,11 +75,10 @@ double CopyGPUTask::run(int workgroupSize,size_t sz)
case DEVICE_TO_HOST_COPY:
for (int i=0;i<nOps;i++) q->readBuffer(a,false,0,sz,buf);
break;
- case DEVICE_TO_DEVICE_COPY: {
+ case DEVICE_TO_DEVICE_COPY:
for (int i=0;i<nOps;i++) { ncount++; q->copyBuffer(a,b,0,0,sz);}
break;
}
- }
q->finish();
double t = (getT() - t0);
if (t < MIN_RUNNING_TIME) continue;
@@ -95,7 +95,6 @@ END:
if (buf != 0) _aligned_free(buf);
if (a != 0) delete a;
if (b != 0) delete b;
-
return mbps;
}
@@ -122,14 +121,14 @@ double ZeroGPUTask::run(int workgroupSize,size_t sz)
// Initialize A
for (size_t i=0;i<sz;i++) buf[i] = (unsigned char)(i & 0xFF);
- if (!q->writeBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->writeBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
// Run tests, double nOps until min time is reached
kernel->setArg(0,a);
- if (!q->execKernel1(kernel,n,workgroupSize).isValid()) goto END;
+ if (q->execKernel1(kernel,n,workgroupSize) == CL_FALSE) goto END;
// check write+zero+read
- if (!q->readBuffer(a,true,0,sz,buf).isValid()) goto END;
+ if (q->readBuffer(a,true,0,sz,buf) == CL_FALSE) goto END;
ok = true;
for (size_t i=0;i<sz;i++) if (buf[i] != (unsigned char)0) ok = false;
if (!ok) { fprintf(stderr,"write+zero+read failed\n"); goto END; }
diff --git a/MPBenchmarks/appMain.cpp b/MPBenchmarks/appMain.cpp
index 2992859..3ddb725 100644
--- a/MPBenchmarks/appMain.cpp
+++ b/MPBenchmarks/appMain.cpp
@@ -103,6 +103,7 @@ int main(int argc,char ** argv)
int minLogSize = 10;
int maxLogSize = 29;
+
std::vector<TestResult> allTests;
// Run all CPU tests
@@ -179,7 +180,7 @@ int main(int argc,char ** argv)
char aux[200];
std::string usz;
getUserSize(ls,usz);
- _snprintf(aux,200,"NT=%3d SZ=%7s %6.0f MB/s",nt,usz.c_str(),mbps);
+ _snprintf(aux,200,"NTHREAD=%3d SZ=%7s %6.0f MB/s",nt,usz.c_str(),mbps);
log->append(aux);
tr.update(ls,mbps);
}
@@ -265,7 +266,6 @@ int main(int argc,char ** argv)
title.assign("Mul1 v1 32-bit");
g = new Mul1GPUTask(MUL1_V1,1,log);
break;
-
}
if (g == 0) continue; // nothing to do