[llvm] [Offload] Ensure to load images when the device is used (PR #103002)
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 13 09:13:12 PDT 2024
================
@@ -32,6 +35,43 @@
using namespace llvm::omp::target::ompt;
#endif
+// If offload is enabled, ensure that device DeviceID has been initialized.
+//
+// The return bool indicates if the offload is to the host device
+// There are three possible results:
+// - Return false if the taregt device is ready for offload
+// - Return true without reporting a runtime error if offload is
+// disabled, perhaps because the initial device was specified.
+// - Report a runtime error and return true.
+//
+// If DeviceID == OFFLOAD_DEVICE_DEFAULT, set DeviceID to the default device.
+// This step might be skipped if offload is disabled.
+bool checkDevice(int64_t &DeviceID, ident_t *Loc) {
+ if (OffloadPolicy::get(*PM).Kind == OffloadPolicy::DISABLED) {
+ DP("Offload is disabled\n");
+ return true;
+ }
+
+ if (DeviceID == OFFLOAD_DEVICE_DEFAULT) {
+ DeviceID = omp_get_default_device();
+ DP("Use default device id %" PRId64 "\n", DeviceID);
+ }
+
+ // Proposed behavior for OpenMP 5.2 in OpenMP spec github issue 2669.
+ if (omp_get_num_devices() == 0) {
+ DP("omp_get_num_devices() == 0 but offload is manadatory\n");
+ handleTargetOutcome(false, Loc);
+ return true;
+ }
+
+ if (DeviceID == omp_get_initial_device()) {
+ DP("Device is host (%" PRId64 "), returning as if offload is disabled\n",
+ DeviceID);
+ return true;
+ }
+ return false;
+}
+
----------------
jdoerfert wrote:
This code is just moved and the last part was split off into PluginManager.cpp.
https://github.com/llvm/llvm-project/pull/103002
More information about the llvm-commits
mailing list