mindspore::registry::opencl
接口汇总
| 类名 | 描述 | 
|---|---|
| 端侧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内核参数值指针。
 
SetKernelArg
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 &kernel, const cl::NDRange &global, const cl::NDRange &local,
                   cl::CommandQueue *command_queue = nullptr, cl::Event *event = nullptr)
运行OpenCL内核。
- 参数 - kernel: OpenCL内核。
- global: 工作项的总数量。
- local: 每个工作组中工作项的数量。
- command_queue: 使用的指令队列,默认空,使用框架内默认队列。
- event: 事件对象的指针,用来标识本次执行命令,默认空,无事件标识。
 
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内存数据支持的最大高度。
GetImagePitchAlignment
uint64_t GetImagePitchAlignment()
获取Image内存数据的宽度对齐值。