diff options
| author | Abhinav Gaba <abhinav.gaba@intel.com> | 2025-08-15 11:49:35 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-15 11:49:35 -0700 |
| commit | 79cf877627ec341c62f64e25a44f3ba340edad1e (patch) | |
| tree | a29e2abb33f9b2b6ee2dc52643aba8a76b42ec1a /offload/plugins-nextgen/cuda/src/rtl.cpp | |
| parent | 82caa251d4e145b54ea76236213617076f254c2b (diff) | |
[Offload] Introduce dataFence plugin interface. (#153793)
The purpose of this fence is to ensure that any `dataSubmit`s inserted
into a queue before a `dataFence` finish before finish before any
`dataSubmit`s
inserted after it begin.
This is a no-op for most queues, since they are in-order, and by design
any operations inserted into them occur in order.
But the interface is supposed to be functional for out-of-order queues.
The addition of the interface means that any operations that rely on
such ordering (like ATTACH map-type support in #149036) can invoke it,
without worrying about whether the underlying queue is in-order or
out-of-order.
Once a plugin supports out-of-order queues, the plugin can implement
this function, without requiring any change at the libomptarget level.
---------
Co-authored-by: Alex Duran <alejandro.duran@intel.com>
Diffstat (limited to 'offload/plugins-nextgen/cuda/src/rtl.cpp')
| -rw-r--r-- | offload/plugins-nextgen/cuda/src/rtl.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/offload/plugins-nextgen/cuda/src/rtl.cpp b/offload/plugins-nextgen/cuda/src/rtl.cpp index 155a580faee2..a99357a3adea 100644 --- a/offload/plugins-nextgen/cuda/src/rtl.cpp +++ b/offload/plugins-nextgen/cuda/src/rtl.cpp @@ -856,6 +856,13 @@ struct CUDADeviceTy : public GenericDeviceTy { return Plugin::success(); } + /// Insert a data fence between previous data operations and the following + /// operations. This is a no-op for CUDA devices as operations inserted into + /// a queue are in-order. + Error dataFence(__tgt_async_info *Async) override { + return Plugin::success(); + } + /// Initialize the device info for interoperability purposes. Error initDeviceInfoImpl(__tgt_device_info *DeviceInfo) override { assert(Context && "Context is null"); |
