[Openmp-commits] [PATCH] D23587: [OPENMP] Implementation of omp_get_default_device and omp_set_default_device

Andrey Churbanov via Openmp-commits openmp-commits at lists.llvm.org
Wed Aug 17 05:53:33 PDT 2016


AndreyChurbanov requested changes to this revision.
AndreyChurbanov added a comment.
This revision now requires changes to proceed.

I suggest moving the ICV into kmp_internal_control structure, thus its propagation from parent to children is automatically maintained everywhere in the library code.


================
Comment at: runtime/src/kmp.h:2253
@@ -2247,2 +2252,3 @@
     kmp_depnode_t *         td_depnode;           // Pointer to graph node if this task has dependencies
+    kmp_int32               td_default_device;    // Default device for task
 #endif
----------------
This does not look like a good location for the ICV.  Is it better to place it along with other per-task ICVs in the td_icvs structure?  Thus it will be automatically maintained at each task creation using appropriate mechanism.

================
Comment at: runtime/src/kmp_ftn_entry.h:907
@@ -906,3 +906,3 @@
 
-#if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
+#if KMP_MIC || KMP_OS_DARWIN
 
----------------
Why KMP_STUB is removed here?  Empty routines should continue to work fine for the stubs library I think.

================
Comment at: runtime/src/kmp_tasking.c:864
@@ -863,2 +863,3 @@
     task->td_depnode = NULL;
+    task->td_default_device = __kmp_default_device;
 #endif
----------------
This looks wrong, as the ICV should be inherited from the parent task (if any).  As I written below, the ICV should better be placed and initialized along with other per-task ICVs. Then global value can be assigned in __kmp_get_global_icvs() function.


Repository:
  rL LLVM

https://reviews.llvm.org/D23587





More information about the Openmp-commits mailing list