vetter / shoc

The SHOC Benchmark Suite
Other
243 stars 104 forks source link

Test OpenCL branch further with Intel's iGPUs #47

Open jyoung3131 opened 9 years ago

jyoung3131 commented 9 years ago

Intel iGPUs from Sandy Bridge onwards are now supported at least in part on Linux using Beignet (https://01.org/beignet). An initial test using Beignet 1.0.0 on a Haswell CPU generated some reasonable results for several of the benchmarks, but many failed due to an issue with the "FillTimingInfo" class in Event.cpp (the specific error returned was CL_PROFILING_INFO_NOT_AVAILABLE).

At this time, it's unclear whether this is a SHOC issue since other platforms (including Intel CPUs) work fine, but it might be worthwhile to check into for future Intel iGPUs.

kgallmei commented 8 years ago

I contacted the Beignet authors, which reacted very rapidly by sending a patch (Unfortunately, this patch is not yet reviewed and not yet upstream.)

From bc862d3f037b6ad330a4f38473aad3822b30e90b Mon Sep 17 00:00:00 2001
From: Luo <xionghu.luo@intel.com>
Date: Wed, 29 Jul 2015 09:41:47 +0800
Subject: [PATCH] runtime: fix event status check bug.

clGetEventProfilingInfo could query all event status.
this could fix the shoc project reported CL_PROFILING_INFO_NOT_AVAILABLE
issue.
https://github.com/vetter/shoc/issues/47

Signed-off-by: Luo Xionghu <xionghu.luo@intel.com>
---
 src/cl_api.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/cl_api.c b/src/cl_api.c
index 28783fd..0ac7112 100644
--- a/src/cl_api.c
+++ b/src/cl_api.c
@@ -1472,7 +1472,7 @@ clGetEventProfilingInfo(cl_event             event,

   if (event->type == CL_COMMAND_USER ||
       !(event->queue->props & CL_QUEUE_PROFILING_ENABLE) ||
-          event->status != CL_COMPLETE) {
+       event->status < CL_COMPLETE || event->status > CL_QUEUED) {
     err = CL_PROFILING_INFO_NOT_AVAILABLE;
     goto error;
   }
-- 
1.9.1
jyoung3131 commented 8 years ago

Ah, that's good news! I'll have to pull the latest git repo to see if this works and will report back.