.. index:: pair: group; SYCL interoperability API .. _doxid-group__dnnl__graph__api__sycl__interop: SYCL interoperability API ========================= .. toctree:: :hidden: namespace_dnnl_graph_sycl_interop.rst Overview ~~~~~~~~ API extensions to interact with the underlying SYCL run-time. :ref:`More...<details-group__dnnl__graph__api__sycl__interop>` .. ref-code-block:: cpp :class: doxyrest-overview-code-block // namespaces namespace :ref:`dnnl::graph::sycl_interop<doxid-namespacednnl_1_1graph_1_1sycl__interop>`; // typedefs typedef void* (*:ref:`dnnl_graph_sycl_allocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga74d9aec0f8f9c3a9da2cbf2df5cc1e8c>`)( size_t size, size_t alignment, const void *dev, const void *context ); typedef void (*:ref:`dnnl_graph_sycl_deallocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga77936c59bb8456176973fa03f990298f>`)( void *buf, const void *dev, const void *context, void *event ); // global functions :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API :ref:`dnnl_graph_sycl_interop_allocator_create<doxid-group__dnnl__graph__api__sycl__interop_1ga06e949434a4fc257e1c89185e97593dc>`( :ref:`dnnl_graph_allocator_t<doxid-group__dnnl__graph__api__allocator_1ga7e5ba6788922a000348e762ac8c88cc6>`* allocator, :ref:`dnnl_graph_sycl_allocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga74d9aec0f8f9c3a9da2cbf2df5cc1e8c>` sycl_malloc, :ref:`dnnl_graph_sycl_deallocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga77936c59bb8456176973fa03f990298f>` sycl_free ); :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API :ref:`dnnl_graph_sycl_interop_make_engine_with_allocator<doxid-group__dnnl__graph__api__sycl__interop_1ga84bf2a778aeb99c8134c541ee2b603bd>`( :ref:`dnnl_engine_t<doxid-group__dnnl__api__engine_1ga1ce7843660e8203ed6e1af9bfd23e14f>`* engine, const void* device, const void* context, :ref:`const_dnnl_graph_allocator_t<doxid-group__dnnl__graph__api__allocator_1ga82fcfed1f65be71d0d1c5cf865f8f499>` alloc ); :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API :ref:`dnnl_graph_sycl_interop_compiled_partition_execute<doxid-group__dnnl__graph__api__sycl__interop_1ga7e51f65c06cd550a282db11ee86b8e47>`( :ref:`const_dnnl_graph_compiled_partition_t<doxid-group__dnnl__graph__api__compiled__partition_1gac1af164b5c86e9a3ff3c13583da98f06>` compiled_partition, :ref:`dnnl_stream_t<doxid-group__dnnl__api__stream_1ga735eb19cfd205c108c468b5657de4eca>` stream, size_t num_inputs, :ref:`const_dnnl_graph_tensor_t<doxid-group__dnnl__graph__api__tensor_1ga501fef96950f38448cb326c776e8d068>`* inputs, size_t num_outputs, :ref:`const_dnnl_graph_tensor_t<doxid-group__dnnl__graph__api__tensor_1ga501fef96950f38448cb326c776e8d068>`* outputs, const void* deps, void* sycl_event ); .. _details-group__dnnl__graph__api__sycl__interop: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ API extensions to interact with the underlying SYCL run-time. Typedefs -------- .. index:: pair: typedef; dnnl_graph_sycl_allocate_f .. _doxid-group__dnnl__graph__api__sycl__interop_1ga74d9aec0f8f9c3a9da2cbf2df5cc1e8c: .. ref-code-block:: cpp :class: doxyrest-title-code-block 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. .. index:: pair: typedef; dnnl_graph_sycl_deallocate_f .. _doxid-group__dnnl__graph__api__sycl__interop_1ga77936c59bb8456176973fa03f990298f: .. ref-code-block:: cpp :class: doxyrest-title-code-block 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 :ref:`dnnl_graph_sycl_allocate_f <doxid-group__dnnl__graph__api__sycl__interop_1ga74d9aec0f8f9c3a9da2cbf2df5cc1e8c>`. Global Functions ---------------- .. index:: pair: function; dnnl_graph_sycl_interop_allocator_create .. _doxid-group__dnnl__graph__api__sycl__interop_1ga06e949434a4fc257e1c89185e97593dc: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API dnnl_graph_sycl_interop_allocator_create( :ref:`dnnl_graph_allocator_t<doxid-group__dnnl__graph__api__allocator_1ga7e5ba6788922a000348e762ac8c88cc6>`* allocator, :ref:`dnnl_graph_sycl_allocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga74d9aec0f8f9c3a9da2cbf2df5cc1e8c>` sycl_malloc, :ref:`dnnl_graph_sycl_deallocate_f<doxid-group__dnnl__graph__api__sycl__interop_1ga77936c59bb8456176973fa03f990298f>` sycl_free ) Creates an allocator with the given allocation and deallocation call-back function pointers. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - allocator - Output allocator * - sycl_malloc - A pointer to SYCL malloc function * - sycl_free - A pointer to SYCL free function .. rubric:: Returns: :ref:`dnnl_success <doxid-group__dnnl__api__utils_1ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c>` on success and a status describing the error otherwise. .. index:: pair: function; dnnl_graph_sycl_interop_make_engine_with_allocator .. _doxid-group__dnnl__graph__api__sycl__interop_1ga84bf2a778aeb99c8134c541ee2b603bd: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API dnnl_graph_sycl_interop_make_engine_with_allocator( :ref:`dnnl_engine_t<doxid-group__dnnl__api__engine_1ga1ce7843660e8203ed6e1af9bfd23e14f>`* engine, const void* device, const void* context, :ref:`const_dnnl_graph_allocator_t<doxid-group__dnnl__graph__api__allocator_1ga82fcfed1f65be71d0d1c5cf865f8f499>` alloc ) This API is a supplement for existing onednn engine API. .. index:: pair: function; dnnl_graph_sycl_interop_compiled_partition_execute .. _doxid-group__dnnl__graph__api__sycl__interop_1ga7e51f65c06cd550a282db11ee86b8e47: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`dnnl_status_t<doxid-group__dnnl__api__utils_1gad24f9ded06e34d3ee71e7fc4b408d57a>` DNNL_API dnnl_graph_sycl_interop_compiled_partition_execute( :ref:`const_dnnl_graph_compiled_partition_t<doxid-group__dnnl__graph__api__compiled__partition_1gac1af164b5c86e9a3ff3c13583da98f06>` compiled_partition, :ref:`dnnl_stream_t<doxid-group__dnnl__api__stream_1ga735eb19cfd205c108c468b5657de4eca>` stream, size_t num_inputs, :ref:`const_dnnl_graph_tensor_t<doxid-group__dnnl__graph__api__tensor_1ga501fef96950f38448cb326c776e8d068>`* inputs, size_t num_outputs, :ref:`const_dnnl_graph_tensor_t<doxid-group__dnnl__graph__api__tensor_1ga501fef96950f38448cb326c776e8d068>`* outputs, const void* deps, void* sycl_event ) Execute a compiled partition with sycl runtime. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - 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. .. rubric:: Returns: :ref:`dnnl_success <doxid-group__dnnl__api__utils_1ggad24f9ded06e34d3ee71e7fc4b408d57aaa31395e9dccc103cf166cf7b38fc5b9c>` on success and a status describing the error otherwise.