116 lines
5.0 KiB
C
116 lines
5.0 KiB
C
// Copyright (C) 2018-2025 Intel Corporation
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
/**
|
|
* @brief This is a header file for ov_remote_context C API
|
|
*
|
|
* @file ov_remote_context.h
|
|
*/
|
|
#pragma once
|
|
#include "openvino/c/gpu/gpu_plugin_properties.h"
|
|
#include "openvino/c/ov_common.h"
|
|
#include "openvino/c/ov_shape.h"
|
|
#include "openvino/c/ov_tensor.h"
|
|
|
|
typedef struct ov_remote_context ov_remote_context_t;
|
|
|
|
/**
|
|
* @brief Allocates memory tensor in device memory or wraps user-supplied memory handle
|
|
* using the specified tensor description and low-level device-specific parameters.
|
|
* Returns a pointer to the object that implements the RemoteTensor interface.
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param context A pointer to the ov_remote_context_t instance.
|
|
* @param type Defines the element type of the tensor.
|
|
* @param shape Defines the shape of the tensor.
|
|
* @param object_args_size Size of the low-level tensor object parameters.
|
|
* @param remote_tensor Pointer to returned ov_tensor_t that contains remote tensor instance.
|
|
* @param ... variadic params Contains low-level tensor object parameters.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_context_create_tensor(const ov_remote_context_t* context,
|
|
const ov_element_type_e type,
|
|
const ov_shape_t shape,
|
|
const size_t object_args_size,
|
|
ov_tensor_t** remote_tensor,
|
|
...);
|
|
|
|
/**
|
|
* @brief Returns name of a device on which underlying object is allocated.
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param context A pointer to the ov_remote_context_t instance.
|
|
* @param device_name Device name will be returned.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_context_get_device_name(const ov_remote_context_t* context, char** device_name);
|
|
|
|
/**
|
|
* @brief Returns a string contains device-specific parameters required for low-level
|
|
* operations with the underlying object.
|
|
* Parameters include device/context handles, access flags,
|
|
* etc. Content of the returned map depends on a remote execution context that is
|
|
* currently set on the device (working scenario).
|
|
* One actaul example: "CONTEXT_TYPE OCL OCL_CONTEXT 0x5583b2ec7b40 OCL_QUEUE 0x5583b2e98ff0"
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param context A pointer to the ov_remote_context_t instance.
|
|
* @param size The size of param pairs.
|
|
* @param params Param name:value list.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_context_get_params(const ov_remote_context_t* context, size_t* size, char** params);
|
|
|
|
/**
|
|
* @brief This method is used to create a host tensor object friendly for the device in current context.
|
|
* For example, GPU context may allocate USM host memory (if corresponding extension is available),
|
|
* which could be more efficient than regular host memory.
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param context A pointer to the ov_remote_context_t instance.
|
|
* @param type Defines the element type of the tensor.
|
|
* @param shape Defines the shape of the tensor.
|
|
* @param tensor Pointer to ov_tensor_t that contains host tensor.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_context_create_host_tensor(const ov_remote_context_t* context,
|
|
const ov_element_type_e type,
|
|
const ov_shape_t shape,
|
|
ov_tensor_t** tensor);
|
|
|
|
/**
|
|
* @brief Release the memory allocated by ov_remote_context_t.
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param context A pointer to the ov_remote_context_t to free memory.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(void)
|
|
ov_remote_context_free(ov_remote_context_t* context);
|
|
|
|
/**
|
|
* @brief Returns a string contains device-specific parameters required for low-level
|
|
* operations with underlying object.
|
|
* Parameters include device/context/surface/buffer handles, access flags,
|
|
* etc. Content of the returned map depends on remote execution context that is
|
|
* currently set on the device (working scenario).
|
|
* One example: "MEM_HANDLE:0x559ff6904b00;OCL_CONTEXT:0x559ff71d62f0;SHARED_MEM_TYPE:OCL_BUFFER;"
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param tensor Pointer to ov_tensor_t that contains host tensor.
|
|
* @param size The size of param pairs.
|
|
* @param params Param name:value list.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_tensor_get_params(ov_tensor_t* tensor, size_t* size, char** params);
|
|
|
|
/**
|
|
* @brief Returns name of a device on which underlying object is allocated.
|
|
* @ingroup ov_remote_context_c_api
|
|
* @param remote_tensor A pointer to the remote tensor instance.
|
|
* @param device_name Device name will be return.
|
|
* @return Status code of the operation: OK(0) for success.
|
|
*/
|
|
OPENVINO_C_API(ov_status_e)
|
|
ov_remote_tensor_get_device_name(ov_tensor_t* remote_tensor, char** device_name);
|