使用显卡程序加速(opencl、cuda)

2020-12-08 10:38:47 浏览数 (1)

opencl源码

https://gitee.com/mirrors/hashcat.git

CPU使用冯诺依曼结构,缓存大,处理单元少 GPU处理图像每个像素可以单独处理,缓存小,处理单元很多

opencl

opencl有大多数显卡的驱动版本 opencl访问内存数据

  • 获取平台–>clGetPlatformIDs
  • 从平台中获取设备–>clGetDeviceIDs
  • 创建上下文–>clCreateContext
  • 创建命令队列–>clCreateCommandQueue
  • 创建缓存->clCreateBuffer
  • 读取程序文件,创建程序–>clCreateProgramWithSource
  • 编译程序–>clBuildProgram
  • 创建内核–>clCreateKernel
  • 为内核设置参数–>clSetKernelArg
  • 将内核发送给命令队列,执行内核–>clEnqueueNDRangeKernel
  • 获取计算结果–>clEnqueueReadBuffer
  • 释放资源–>clReleaseXX**

cuda

  • kernel核函数,GPU执行
  • cpu执行host程序,gpu执行device程序
  • _device__声明函数只能被_device、__global__声明函数调用;__global__声明函数在GPU中执行,CPU函数

0 人点赞