[Openmp-commits] [PATCH] D107656: [OpenMP] Use events and taskyield in target nowait task to unblock host threads

George Rokos via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Fri Aug 6 14:44:49 PDT 2021

grokos added inline comments.

Comment at: openmp/libomptarget/include/omptarget.h:349
+void __kmpc_target_task_yield();
This function is defined in libomp, so it needs to be declared with the `weak` attribute in `private.h` alongside the other API functions from libomp (see `private.h`, the code block around line 90). Otherwise, we make libomptarget dependent on libomp, whereas we want it to be able to be build independently from any specific host OpenMP runtime.

Comment at: openmp/libomptarget/src/CMakeLists.txt:38
 target_link_libraries(omptarget PRIVATE
+  omp
If you move the declaration of `__kmpc_target_task_yield` to `private.h` and mark it as weak, we can skip linking against `omp`.

Comment at: openmp/libomptarget/src/device.cpp:552
+// when OFFLOAD_SUCCESS is returned, it means either the event has been
+// fullfiled without error or the event has not been not fullfiled and
+// AsyncInfo.Event is not nullptr.
"fullfiled" --> "fulfilled"
"has not been not fullfiled" --> "has not been fulfilled"

Comment at: openmp/libomptarget/src/interface.cpp:323
 EXTERN int __tgt_target_nowait_mapper(
     ident_t *loc, int64_t device_id, void *host_ptr, int32_t arg_num,
This single-team API function needs the same patching you applied to `__tgt_target_teams_nowait_mapper`.

Comment at: openmp/libomptarget/src/omptarget.cpp:24
+  char *EnvStr = getenv("LIBOMPTARGET_USE_NOWAIT_EVENT");
+  return EnvStr ? std::stoi(EnvStr) : 0;
Should we check for invalid values of this env var?



More information about the Openmp-commits mailing list