class InferenceEngine::gpu::ClBufferBlob

Overview

This class represents an abstraction for GPU plugin remote blob which can be shared with user-supplied OpenCL buffer. The plugin object derived from this class can be obtained with CreateBlob() call. More…

#include <gpu_context_api_ocl.hpp>

class ClBufferBlob:
    public InferenceEngine::gpu::ClBlob,
    public InferenceEngine::gpu::details::param_map_obj_getter
{
public:
    // typedefs

    typedef std::shared_ptr<ClBufferBlob> Ptr;

    // construction

    ClBufferBlob(const TensorDesc& tensorDesc);

    // methods

    cl_mem get();
    operator cl_mem ();
    operator cl::Buffer ();
};

// direct descendants

class D3DBufferBlob;

Inherited Members

public:
    // typedefs

    typedef std::shared_ptr<Blob> Ptr;
    typedef std::shared_ptr<const Blob> CPtr;
    typedef std::shared_ptr<MemoryBlob> Ptr;
    typedef std::shared_ptr<const MemoryBlob> CPtr;
    typedef std::shared_ptr<RemoteBlob> Ptr;
    typedef std::shared_ptr<const RemoteBlob> CPtr;
    typedef std::shared_ptr<ClBlob> Ptr;

    // methods

    static Ptr CreateFromData(const DataPtr& data);

    template <
        typename T,
        typename std::enable_if<!std::is_pointer<T>::value&&!std::is_reference<T>::value, int>::type = 0,
        typename std::enable_if<std::is_base_of<Blob, T>::value, int>::type = 0
        >
    bool is();

    template <
        typename T,
        typename std::enable_if<!std::is_pointer<T>::value&&!std::is_reference<T>::value, int>::type = 0,
        typename std::enable_if<std::is_base_of<Blob, T>::value, int>::type = 0
        >
    bool is() const;

    template <
        typename T,
        typename std::enable_if<!std::is_pointer<T>::value&&!std::is_reference<T>::value, int>::type = 0,
        typename std::enable_if<std::is_base_of<Blob, T>::value, int>::type = 0
        >
    T* as();

    template <
        typename T,
        typename std::enable_if<!std::is_pointer<T>::value&&!std::is_reference<T>::value, int>::type = 0,
        typename std::enable_if<std::is_base_of<Blob, T>::value, int>::type = 0
        >
    const T* as() const;

    virtual const TensorDesc& getTensorDesc() const;
    virtual TensorDesc& getTensorDesc();
    virtual size_t size() const;
    virtual size_t byteSize() const;
    virtual size_t element_size() const = 0;
    virtual void allocate() = 0;
    virtual bool deallocate() = 0;
    virtual Blob::Ptr createROI(const ROI& roi) const;
    virtual const TensorDesc& getTensorDesc() const;
    virtual TensorDesc& getTensorDesc();
    virtual size_t size() const;
    virtual size_t byteSize() const;
    virtual size_t element_size() const = 0;
    virtual void allocate() = 0;
    virtual bool deallocate() = 0;
    virtual LockedMemory<void> rwmap() = 0;
    virtual LockedMemory<const void> rmap() const = 0;
    virtual LockedMemory<void> wmap() = 0;
    virtual size_t element_size() const;
    virtual ParamMap getParams() const = 0;
    virtual std::string getDeviceName() const = 0;
    virtual std::shared_ptr<RemoteContext> getContext() const = 0;

Detailed Documentation

This class represents an abstraction for GPU plugin remote blob which can be shared with user-supplied OpenCL buffer. The plugin object derived from this class can be obtained with CreateBlob() call.

User can obtain OpenCL buffer handle from this class.

Typedefs

typedef std::shared_ptr<ClBufferBlob> Ptr

A smart pointer to the ClBufferBlob object.

Construction

ClBufferBlob(const TensorDesc& tensorDesc)

Creates a ClBufferBlob object with the specified dimensions and layout.

Parameters:

tensorDesc

Tensor description

Methods

cl_mem get()

Returns the underlying OpenCL memory object handle.

operator cl_mem ()

OpenCL memory handle conversion operator.

operator cl::Buffer ()

Standard Khronos cl::Buffer wrapper conversion operator.

Returns:

cl::Buffer object