mindspore::registry::opencl

接口汇总

类名

描述

OpenCLRuntimeWrapper

端侧GPU操作的接口类

OpenCLRuntimeWrapper

#include <include/registry/opencl_runtime_wrapper.h>

OpenCLRuntimeWrapper类包装了内部OpenCL的相关接口,用于支持南向GPU算子的开发。

OpenCLRuntimeWrapper

OpenCLRuntimeWrapper() = default;

构造函数。

~OpenCLRuntimeWrapper

~OpenCLRuntimeWrapper = default;

析构函数。

公有成员函数

LoadSource

Status LoadSource(const std::string &program_name, const std::string &source);

加载OpenCL源代码并指定程序名。

  • 参数

    • program_name: OpenCL源程序名称。

    • source: OpenCL源程序。

BuildKernel

Status BuildKernel(cl::Kernel *kernel, const std::string &program_name, const std::string &kernel_name,
                     const std::vector<std::string> &build_options_ext = {});

构建OpenCL代码。

  • 参数

    • kernel: 用于返回已编译的内核。

    • program_name: OpenCL源程序名称。

    • kernel_name: OpenCL内核名称。

    • build_options_ext: OpenCL内核构建选项。

SetKernelArg

Status SetKernelArg(const cl::Kernel &kernel, uint32_t index, void *const value);

设置OpenCL内核运行时指针类参数的值。

  • 参数

    • kernel: OpenCL内核。

    • index: OpenCL内核参数索引。

    • value: OpenCL内核参数值指针。

template <typename T>
  typename std::enable_if<!std::is_pointer<T>::value, Status>::type SetKernelArg(const cl::Kernel &kernel,
                                                                                 uint32_t index, const T value);

设置OpenCL内核运行时非指针类参数的值。

  • 参数

    • kernel: OpenCL内核。

    • index: OpenCL内核参数索引。

    • value: OpenCL内核参数值。

RunKernel

Status RunKernel(const cl::Kernel &kernbel, const cl::NDRange &global, const cl::NDRange &local);

运行OpenCL内核。

  • 参数

    • kernel: OpenCL内核。

    • global: 定义工作项的总数量。

    • local: 定义每个工作组中工作项的数量。

SyncCommandQueue

Status SyncCommandQueue();

同步指令队列。

GetAllocator

std::shared_ptr<Allocator> GetAllocator();

获取GPU内存分配器的智能指针。通过Allocator接口,可申请GPU内存,用于OpenCL内核的运算。

MapBuffer

void *MapBuffer(void *host_ptr, int flags, bool sync = true);

重新将GPU内存映射到主机内存地址,以便读写。

  • 参数

    • host_ptr: 主机内存地址(为GPU内存所映射的CPU地址)。

    • flags: 内存映射的OpenCL功能符号,如CL_MAP_READ,CL_MAP_WRITE。

    • sync: 是否同步标志。

UnmapBuffer

Status UnmapBuffer(void *host_ptr);

将改变后的内存数据,写入GPU。

  • 参数

    • host_ptr: 主机内存地址(为GPU内存所映射的CPU地址)。

ReadImage

Status ReadImage(void *buffer, void *dst_data);

读取解析Image形式的GPU内存到目标地址,写入的数据格式为NHWC4(C轴4数据对齐的NHWC格式数据)。

  • 参数

    • buffer: Image格式的GPU内存所映射的主机内存地址。

    • dst_data: 目标地址。

WriteImage

Status WriteImage(void *buffer, void *src_data);

从源地址src_data读取数据,写入到Image形式的GPU内存buffer

  • 参数

    • buffer: Image格式的GPU内存所映射的主机内存地址。

    • src_data: 源地址。

DeviceMaxWorkGroupSize

uint64_t DeviceMaxWorkGroupSize();

获取支持的最大工作组数量。

GetMaxImage2DWidth

uint64_t GetMaxImage2DWidth();

获取Image内存数据支持的最大宽度。

GetMaxImage2DHeight

uint64_t GetMaxImage2DHeight();

获取Image内存数据支持的最大高度。

GetMaxImage2DWidth

uint64_t GetImagePitchAlignment();

获取Image内存数据的宽度对齐值。