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内核参数值指针。
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内存数据的宽度对齐值。