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

OrtInteropApi()

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<OrtExternalResourceImporter>> out_importer)>>
\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<OrtValue>> out_tensor)>>
\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<OrtExternalMemoryHandle>> out_handle)>>
\brief Import external memory into the execution provider.
getter/setter pair
ImportSemaphore Pointer<NativeFunction<OrtStatusPtr Function(Pointer<OrtExternalResourceImporter> importer, Pointer<OrtExternalSemaphoreDescriptor> desc, Pointer<Pointer<OrtExternalSemaphoreHandle>> out_handle)>>
\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