Przeglądaj źródła

SOCL: fix event triggering

Sylvain Henry 12 lat temu
rodzic
commit
08a60eee47
3 zmienionych plików z 13 dodań i 2 usunięć
  1. 1 2
      socl/src/cl_enqueuendrangekernel.c
  2. 10 0
      socl/src/event.c
  3. 2 0
      socl/src/event.h

+ 1 - 2
socl/src/cl_enqueuendrangekernel.c

@@ -167,7 +167,6 @@ soclEnqueueNDRangeKernel(cl_command_queue cq,
       totalEvent->prof_submit = totalEvent->prof_start;
       totalEvent->prof_queued = totalEvent->prof_start;
       totalEvent->cq = cq;
-      totalEvent->status = CL_COMPLETE;
 
       command_marker cmd = command_marker_create();
       beforeEvent = command_event_get(cmd);
@@ -204,7 +203,7 @@ soclEnqueueNDRangeKernel(cl_command_queue cq,
 
          pthread_mutex_unlock(&kernel->split_lock);
 
-         totalEvent->prof_end = _socl_nanotime();
+         event_complete(totalEvent);
          RETURN_EVENT(totalEvent,event);
       } else {
          soclReleaseEvent(totalEvent);

+ 10 - 0
socl/src/event.c

@@ -47,6 +47,16 @@ cl_event event_create(void) {
    return ev;
 }
 
+void event_complete(cl_event ev) {
+  ev->status = CL_COMPLETE;
+  
+  ev->prof_end = _socl_nanotime();
+
+  /* Trigger the tag associated to the command event */
+  DEBUG_MSG("Trigger event %d\n", ev->id);
+  starpu_tag_notify_from_apps(ev->id);
+}
+
 static void release_callback_event(void * e) {
   cl_event event = (cl_event)e;
 

+ 2 - 0
socl/src/event.h

@@ -31,4 +31,6 @@ cl_event event_create(void);
  */
 int event_unique_id();
 
+void event_complete(cl_event ev);
+
 #endif /* SOCL_EVENT_H */