【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口

总体架构

【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口_第1张图片

通过封装OpenCL的一系列操作,仅提供C API给外部应用调用,以提高GPU应用开发的便利性。

【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口_第2张图片

目的

  • 提供一个更为便利使用OpenCL的开发平台。
  • 更容易地开发同时调用GPU和CPU的应用软件。

特性

  • 可扩展性架构
  • 标准的C语言库及API
  • 隐藏OpenCL运行细节
  • 通过OpenCL内核封装通用功能
  • 使用者无需具备OpenCL知识内容

 

环境搭建

Step 01下载并安装OpenCL驱动。https://developer.nvidia.com/opencl

Step 02:下载并安装OpenCL SDK。https://developer.nvidia.com/opencl

Step 03:配置Visual Studio中项目属性页面的如下内容,

  • VC++ Directories – Include Directories & Library Directories
  • Linker – Additional Library Directories
  • Linker – Input – Additional Depandencies

【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口_第3张图片

平台和设备API

  • bool initPlatform();
  • unsigned int getPlatformCnt();
  • void getPlatformInfo(unsigned int platformIndex);
  • bool initDevice(unsigned int platformIndex);
  • unsigned int getDeviceCnt();
  • void getDeviceInfo(unsigned int deviceIndex);

上下文API

  • bool initContext();

命令队列API

  • bool initCmdQueue(unsigned int deviceIndex);

内核API

  • bool initProgram(char *fileName, const int bufferSize);
  • bool initKernel(char* kernel_name);
  • bool excuteKernel(size_t *pGlobalWorkSize, size_t *pLocalWorkSize);
  • bool bindingKernelArg(unsigned int argIndex, unsigned int dataSize);
  • bool setKernelArg(unsigned int argIndex, float *pValue, unsigned int dataSize);
  • bool getKernelArg(unsigned int argIndex, float *pValue, unsigned int dataSize);

共用API

  • int getRunStatusInfo();
  • unsigned long getProfilerTime();
  • int getVendorID(unsigned int deviceIndex);
  • bool isAMD(unsigned int deviceIndex);
  • bool isIntel(unsigned int deviceIndex);
  • bool isNVidia(unsigned int deviceIndex);
  • void freeEnvResource();

SDK应用流程

【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口_第4张图片

性能

【异构计算平台系列 - GPU + OpenCL - 05】GPU Software Development Kit架构及核心接口_第5张图片

你可能感兴趣的:(OpenCL/GPU,异构计算平台)