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

总体架构

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

目的

  • 提供一个更为便利使用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

平台和设备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应用流程

性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值