Intel® oneAPI Deep Neural Network Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
SYCL interoperability API
Overview
API extensions to interact with the underlying SYCL run-time. More…
// namespaces
namespace dnnl::graph::sycl_interop;
// typedefs
typedef void* (*dnnl_graph_sycl_allocate_f)(
    size_t size,
    size_t alignment,
    const void *dev,
    const void *context
    );
typedef void (*dnnl_graph_sycl_deallocate_f)(
    void *buf,
    const void *dev,
    const void *context,
    void *event
    );
// global functions
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_allocator_create(
    dnnl_graph_allocator_t* allocator,
    dnnl_graph_sycl_allocate_f sycl_malloc,
    dnnl_graph_sycl_deallocate_f sycl_free
    );
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_make_engine_with_allocator(
    dnnl_engine_t* engine,
    const void* device,
    const void* context,
    const_dnnl_graph_allocator_t alloc
    );
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_compiled_partition_execute(
    const_dnnl_graph_compiled_partition_t compiled_partition,
    dnnl_stream_t stream,
    size_t num_inputs,
    const_dnnl_graph_tensor_t* inputs,
    size_t num_outputs,
    const_dnnl_graph_tensor_t* outputs,
    const void* deps,
    void* sycl_event
    );Detailed Documentation
API extensions to interact with the underlying SYCL run-time.
Typedefs
typedef void* (*dnnl_graph_sycl_allocate_f)(
    size_t size,
    size_t alignment,
    const void *dev,
    const void *context
    )Allocation call-back function interface for SYCL.
SYCL allocator should be used for SYCL runtime and host allocator should be used for non-SYCL. The call-back should return a USM device memory pointer.
typedef void (*dnnl_graph_sycl_deallocate_f)(
    void *buf,
    const void *dev,
    const void *context,
    void *event
    )Deallocation call-back function interface for SYCL.
SYCL allocator should be used for SYCL runtime and host allocator should be used for non-SYCL. The call-back should deallocate a USM device memory returned by dnnl_graph_sycl_allocate_f.
Global Functions
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_allocator_create(
    dnnl_graph_allocator_t* allocator,
    dnnl_graph_sycl_allocate_f sycl_malloc,
    dnnl_graph_sycl_deallocate_f sycl_free
    )Creates an allocator with the given allocation and deallocation call-back function pointers.
Parameters:
| allocator | Output allocator | 
| sycl_malloc | A pointer to SYCL malloc function | 
| sycl_free | A pointer to SYCL free function | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_make_engine_with_allocator(
    dnnl_engine_t* engine,
    const void* device,
    const void* context,
    const_dnnl_graph_allocator_t alloc
    )This API is a supplement for existing onednn engine API.
dnnl_status_t DNNL_API dnnl_graph_sycl_interop_compiled_partition_execute(
    const_dnnl_graph_compiled_partition_t compiled_partition,
    dnnl_stream_t stream,
    size_t num_inputs,
    const_dnnl_graph_tensor_t* inputs,
    size_t num_outputs,
    const_dnnl_graph_tensor_t* outputs,
    const void* deps,
    void* sycl_event
    )Execute a compiled partition with sycl runtime.
Parameters:
| compiled_partition | The handle of target compiled_partition. | 
| stream | The stream used for execution | 
| num_inputs | The number of input tensors | 
| inputs | A list of input tensors | 
| num_outputs | The number of output tensors | 
| outputs | A non-empty list of output tensors | 
| deps | Optional handle of list with sycl::event dependencies. | 
| sycl_event | The handle of sycl event. | 
Returns:
dnnl_success on success and a status describing the error otherwise.