OpenCL中主机与设备之间的交一互
来源:互联网 发布:易企秀官网mac版 编辑:程序博客网 时间:2024/05/22 18:35
引言
opencl应用的第一步是查询平台集合,选择其中一个或多个平台应用中使用。
查询平台信息
平台集可以用以下命令查询:
cl_int clGetPlatformIDs( cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms )其中各项参数的含义:
- num_entries是可以加入平台的ID数量。如果平台数不是NULL,那么这一项必需是大于零。
- platforms 会返回所找到的 OpenCL 平台的列表。platforms 中 cl_platform_id的值可以用来标识一个特定的 OpenCL 平台。
- num_platforms 返回实际可用的 OpenCL 平台的数目。
这个命令会得到可用opencl平台列表。如果参数platforms是为NULL,clGetPlatformIDs会返回可用平台数。返回的平台数可以用num_entries来限制,这个要大于0并小于或等于可用平台数。可以举一个简单的例子说明如何查询和选择平台。下面使用clGetPlatformIDs得到一个平台IDs例表:
cl_int errNum;cl_uint numPlatforms;cl_platform_id *platformid;cl_context context =Null;errNum =clGetPlatformIDS(0,NULL,&numPlatforms);if( errNum !=CL_SUCCESS){ cout <<"something wrong getplatformIDs"<<endl; return -1;}这里面cnt = clGetPlatformIDs(1, &platform, NULL);就是指定了1平台,实际上有几个平台可用已经没有关系了,所以直接写成了NULL。。直接给的也是平台的地址&platform。
查询设备
cl_int clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices)其中各个参数的含义:
- platform 是 clGetPlatformIDs 所返回的平台 ID 或者是 NULL。
- device_type 是位域,用来标识 OpenCL 设备的类型
- num_entries 是 cl_device 表项的数目,此表项可以添进 devices
- devices 返回一个列表,其中存放所找到的 OpenCL 设备
- num_devices 返回与 device_type 相匹配的可用 OpenCL 设备的数目
cnt = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &device_id, NULL); if (cnt != CL_SUCCESS) { cout <<"something wrong getdeviceIDs" << endl; return -1; }CL_DEVICE_TYPE_CPU=====宿主机处理器。在其上运行 OpenCL 实现,是单核或多核 CPU。
CL_DEVICE_TYPE_GPU=====GPU。这意味着此设备也可以用来加速一个 3DAPI(如 OpenGL 或 DirectX)。
CL_DEVICE_TYPE_ACCELERATOR=====OpenGL 专用加速器(如 IBM 的 CELL Blade)。这些设备通过外围内联(如 PCIe)与宿主机处理器通信。
CL_DEVICE_TYPE_DEFAULT ===== 系统中默认的 OpenCL 设备。
CL_DEVICE_TYPE_ALL ===== 系统中所有可用的 OpenCL 设备。
敬请关注本博客和新浪微博songzi_tea.
- OpenCL中主机与设备之间的交一互
- 主机与设备之间文件拷贝的几种方式
- 利用分页锁定主机存储器进行主机与设备之间的0拷贝
- opencl中设备内存
- 设备与设备之间 的数据传输
- 服务器与主机之间的文件传输SCP
- vbox中windows主机与Linux虚拟机之间数据共享的几种方式
- openCL在GPU与CPU设备上的区别--计算E值
- OpenCL 和 CUDA 之间的区别
- OpenCL 和 CUDA 之间的区别
- hadoop:在vmare中配置的多个虚拟机CentOS配置静态ip,并能ping通windows主机,使得主机与虚拟机之间的网络互通
- platform设备与设备driver之间的关系
- platform设备与设备driver之间的关系
- 反渗透设备:纯水处理设备与反渗透设备之间的区别
- 主机与VMware的Linux虚拟机之间共享交换文件
- 主机与VMware的Linux虚拟机之间共享交换文件
- VM VirtualBox虚拟机与物理主机之间的复制
- 虚拟机与主机之间的几种通信方法
- 斐波那契数列
- LeetCode:Candy
- Codeforces Round #203 (Div. 2) C------Bombs
- matlab对于文档的路径和文件夹的一些简单处理
- Perl 正则表达式中的修饰符
- OpenCL中主机与设备之间的交一互
- 网络编程中的网络字节序与主机字节序
- 处理各种浏览器 获取事件目标的兼容性
- linux vi使用方法
- C语言泛型编程技术(linux,mysql广泛应用)
- 高效系统地学习
- 一个Activity中多个 ListView 只允许主界面滚动
- 学习笔记之JavaWeb基础:Servlet的HelloWorld和原理
- java数组