OpenCL 程序流程

OpenCL程序

0. 载入opencl库  (这种方法可使得程序在编译时脱离OpenCL库)
   handel = dlopen("dlOpenCL.so",其他参数); // 打开so共享库
   dlsym(handel,#func_name)                // 注册库内部的函数
1. 检测申请计算资源 (初始化,一般只需要执行一次)
  1)获取平台 –>      clGetPlatformIDs   先获取平台数量,再获取平台id列表
  2)从平台中获取设备–>clGetDeviceIDs     先获取设备数量,再获取设备id列表
                     clGetDeviceInfo     获取设备信息(名字 版本 最大计算单元 全局内存缓冲区大小等信息)
  3)创建上下文–>     clCreateContext
  4)创建命令队列–>   clCreateCommandQueue
  
  前面为 平台层,后面为 运行时层
  5)创建缓存->clCreateBuffer
2. 拷贝主机数据到设备device  clCreateBuffer
3. opencl程序编译
  6)读取程序文件,创建程序–>clCreateProgramWithSource
  7)编译程序–>clBuildProgram
  8)创建内核–>clCreateKernel
  9)为内核设置参数–>clSetKernelArg
     设置 NDRange 
4. 运行kernel函数
  10)将内核发送给命令队列,执行内核–>clEnqueueNDRangeKernel
5. 拷贝设备上的计算结果到主机
  11)获取计算结果–>clEnqueueReadBuffer
6.释放计算资源
  12)释放资源–>clReleaseXX**
  
释放kernel核,              clReleaseKernel
释放program编译程序,       clReleaseProgram
释放device memory设备内存, clReleaseMemObject
释放command queue指令队列, clReleaseCommandQueue
释放context上下文环境,     clReleaseContext

CUDA C加速步骤

1)device (也就是GPU) 上申请内存
2)host (也就是CPU) 上的数据拷贝到device
3) 执行CUDA kernel function
4) 将device上的计算结果传回host
5) 释放device上的内存

ref

https://blog.youkuaiyun.com/RuanJian_GC/article/details/132570906

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值