class ov::intel_gpu::ocl::ClContext

Overview

This class represents an abstraction for GPU plugin remote context which is shared with OpenCL context object. The plugin object derived from this class can be obtained either with CompiledModel::get_context() or Core::create_context() calls. More…

#include <ocl.hpp>

class ClContext: public ov::RemoteContext
{
public:
    // construction

    ClContext(Core& core, cl_context ctx, int ctx_device_id = 0);
    ClContext(Core& core, cl_command_queue queue);

    // methods

    static void type_check(const RemoteContext& remote_context);
    cl_context get();
    operator cl_context ();
    operator cl::Context ();

    std::pair<ClImage2DTensor, ClImage2DTensor> create_tensor_nv12(
        const cl::Image2D& nv12_image_plane_y,
        const cl::Image2D& nv12_image_plane_uv
        );

    ClBufferTensor create_tensor(
        const element::Type type,
        const Shape& shape,
        const cl_mem buffer
        );

    ClBufferTensor create_tensor(
        const element::Type type,
        const Shape& shape,
        const cl::Buffer& buffer
        );

    ClImage2DTensor create_tensor(
        const element::Type type,
        const Shape& shape,
        const cl::Image2D& image
        );

    USMTensor create_tensor(
        const element::Type type,
        const Shape& shape,
        void \* usm_ptr
        );

    USMTensor create_usm_host_tensor(const element::Type type, const Shape& shape);
    USMTensor create_usm_device_tensor(const element::Type type, const Shape& shape);

    RemoteTensor create_tensor(
        const element::Type& type,
        const Shape& shape,
        const AnyMap& params = {}
        );
};

// direct descendants

class D3DContext;
class VAContext;

Inherited Members

public:
    // methods

    RemoteContext& operator = (const RemoteContext& other);
    RemoteContext& operator = (RemoteContext&& other);

    template <typename T>
    bool is() const;

    template <typename T>
    const T as() const;

    RemoteTensor create_tensor(
        const element::Type& type,
        const Shape& shape,
        const AnyMap& params = {}
        );

    AnyMap get_params() const;
    Tensor create_host_tensor(const element::Type type, const Shape& shape);

    static void type_check(
        const RemoteContext& remote_context,
        const std::map<std::string, std::vector<std::string>>& type_info = {}
        );

Detailed Documentation

This class represents an abstraction for GPU plugin remote context which is shared with OpenCL context object. The plugin object derived from this class can be obtained either with CompiledModel::get_context() or Core::create_context() calls.

Construction

ClContext(Core& core, cl_context ctx, int ctx_device_id = 0)

Constructs context object from user-supplied OpenCL context handle.

Parameters:

core

A reference to OpenVINO Runtime Core object

ctx

A OpenCL context to be used to create shared remote context

ctx_device_id

An ID of device to be used from ctx

ClContext(Core& core, cl_command_queue queue)

Constructs context object from user-supplied OpenCL context handle.

Only latency mode is supported for such context sharing case.

Parameters:

core

A reference to OpenVINO Runtime Core object

queue

An OpenCL queue to be used to create shared remote context. Queue will be reused inside the plugin.

Methods

static void type_check(const RemoteContext& remote_context)

Checks that type defined runtime parameters are presented in remote object.

Parameters:

remote_context

A remote context to check

cl_context get()

Returns the underlying OpenCL context handle.

Returns:

cl_context

operator cl_context ()

OpenCL context handle conversion operator for the ClContext object.

Returns:

cl_context

operator cl::Context ()

Standard Khronos cl::Context wrapper conversion operator for the ClContext object.

Returns:

cl::Context object

std::pair<ClImage2DTensor, ClImage2DTensor> create_tensor_nv12(
    const cl::Image2D& nv12_image_plane_y,
    const cl::Image2D& nv12_image_plane_uv
    )

This function is used to construct a NV12 compound tensor object from two cl::Image2D wrapper objects. The resulting compound contains two remote tensors for Y and UV planes of the surface.

Parameters:

nv12_image_plane_y

cl::Image2D object containing Y plane data.

nv12_image_plane_uv

cl::Image2D object containing UV plane data.

Returns:

A pair of remote tensors for each plane

ClBufferTensor create_tensor(
    const element::Type type,
    const Shape& shape,
    const cl_mem buffer
    )

This function is used to obtain remote tensor object from user-supplied cl_mem object.

Parameters:

type

Tensor element type

shape

Tensor shape

buffer

A cl_mem object that should be wrapped by a remote tensor

Returns:

A remote tensor instance

ClBufferTensor create_tensor(
    const element::Type type,
    const Shape& shape,
    const cl::Buffer& buffer
    )

This function is used to obtain remote tensor object from user-supplied cl::Buffer object.

Parameters:

type

Tensor element type

shape

Tensor shape

buffer

A cl::Buffer object that should be wrapped by a remote tensor

Returns:

A remote tensor instance

ClImage2DTensor create_tensor(
    const element::Type type,
    const Shape& shape,
    const cl::Image2D& image
    )

This function is used to obtain remote tensor object from user-supplied cl::Image2D object.

Parameters:

type

Tensor element type

shape

Tensor shape

image

A cl::Image2D object that should be wrapped by a remote tensor

Returns:

A remote tensor instance

USMTensor create_tensor(
    const element::Type type,
    const Shape& shape,
    void \* usm_ptr
    )

This function is used to obtain remote tensor object from user-supplied USM pointer.

Parameters:

type

Tensor element type

shape

Tensor shape

usm_ptr

A USM pointer that should be wrapped by a remote tensor

Returns:

A remote tensor instance

USMTensor create_usm_host_tensor(const element::Type type, const Shape& shape)

This function is used to allocate USM tensor with host allocation type.

Parameters:

type

Tensor element type

shape

Tensor shape

Returns:

A remote tensor instance

USMTensor create_usm_device_tensor(const element::Type type, const Shape& shape)

This function is used to allocate USM tensor with device allocation type.

Parameters:

type

Tensor element type

shape

Tensor shape

Returns:

A remote tensor instance

RemoteTensor create_tensor(
    const element::Type& type,
    const Shape& shape,
    const AnyMap& params = {}
    )

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.

Parameters:

type

Defines the element type of the tensor.

shape

Defines the shape of the tensor.

params

Map of the low-level tensor object parameters.

Returns:

Pointer to a plugin object that implements the RemoteTensor interface.