OrtInteropApi class final
\brief The OrtInteropApi struct provides functions for external resource interop with execution providers.
This API enables importing external GPU resources (memory and semaphores) for zero-copy sharing between ORT inference and other GPU workloads (e.g., D3D12 applications, media pipelines).
The API is designed to be EP-agnostic and can be extended to support various GPU interop mechanisms (D3D12 shared handles, CUDA external memory, Vulkan, etc.).
Example usage (error handling not shown): const OrtInteropApi* interop_api = ort_api->GetInteropApi(); OrtExternalResourceImporter* importer = NULL;
status = interop_api->CreateExternalResourceImporterForDevice(ep_device, &importer); if (importer == nullptr) { // External resource import is optional for EPs to implement return; } bool can_import = false; status = interop_api->CanImportMemory(importer, ORT_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE, &can_import); if (can_import) { OrtExternalMemoryHandle* mem_handle = NULL; status = interop_api->ImportMemory(importer, &mem_desc, &mem_handle); // ... use mem_handle to create tensors ... interop_api->ReleaseExternalMemoryHandle(mem_handle); } interop_api->ReleaseExternalResourceImporter(importer);
\since Version 1.24.
- Inheritance
- Implemented types
- Available extensions
Constructors
Properties
-
address
→ Pointer<
T> -
Available on T, provided by the StructAddress extension
The memory address of the underlying data.no setter -
CanImportMemory
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, UnsignedInt handle_type, Pointer<Bool> out_supported)> -
\brief Check if the external resource importer can import a specific memory handle type.
getter/setter pair
-
CanImportSemaphore
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, UnsignedInt type, Pointer<Bool> out_supported)> -
\brief Check if the external resource importer can import a specific semaphore type.
getter/setter pair
-
CreateExternalResourceImporterForDevice
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtEpDevice> ep_device, Pointer<Pointer< out_importer)>OrtExternalResourceImporter> > -
\brief Create an external resource importer for a specific EP device.
getter/setter pair
-
CreateTensorFromMemory
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, Pointer<OrtExternalMemoryHandle> mem_handle, Pointer<OrtExternalTensorDescriptor> tensor_desc, Pointer<Pointer< out_tensor)>OrtValue> > -
\brief Create a tensor backed by imported external memory.
getter/setter pair
- hashCode → int
-
The hash code for this object.
no setterinherited
-
ImportMemory
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, Pointer<OrtExternalMemoryDescriptor> desc, Pointer<Pointer< out_handle)>OrtExternalMemoryHandle> > -
\brief Import external memory into the execution provider.
getter/setter pair
-
ImportSemaphore
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, Pointer<OrtExternalSemaphoreDescriptor> desc, Pointer<Pointer< out_handle)>OrtExternalSemaphoreHandle> > -
\brief Import an external semaphore into the execution provider.
getter/setter pair
-
ReleaseExternalMemoryHandle
↔ Pointer<
NativeFunction< Void Function(Pointer< >OrtExternalMemoryHandle> input)> -
\brief Release an OrtExternalMemoryHandle instance.
getter/setter pair
-
ReleaseExternalResourceImporter
↔ Pointer<
NativeFunction< Void Function(Pointer< >OrtExternalResourceImporter> input)> -
\brief Release an OrtExternalResourceImporter instance.
getter/setter pair
-
ReleaseExternalSemaphoreHandle
↔ Pointer<
NativeFunction< Void Function(Pointer< >OrtExternalSemaphoreHandle> input)> -
\brief Release an OrtExternalSemaphoreHandle instance.
getter/setter pair
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
SignalSemaphore
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, Pointer<OrtExternalSemaphoreHandle> semaphore_handle, Pointer<OrtSyncStream> stream, Uint64 value)> -
\brief Signal an external semaphore from the EP's stream.
getter/setter pair
-
WaitSemaphore
↔ Pointer<
NativeFunction< OrtStatusPtr Function(Pointer< >OrtExternalResourceImporter> importer, Pointer<OrtExternalSemaphoreHandle> semaphore_handle, Pointer<OrtSyncStream> stream, Uint64 value)> -
\brief Wait on an external semaphore on the EP's stream.
getter/setter pair
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited