GPGPU OpenCL 获取设备信息
在使用OpenCL编程中,需要对GPU设备的底层理解,这样才能更好的进行代码优化。
比如计算单元CU数量,每个CU的执行单元PE数量,每个CU中的共享内存大小等等。只有了解了这些才能更好的使用共享内存,设计核函数的运行参数等。
本文:http://www.cnblogs.com/xudong-bupt/p/3586050.html
1.clGetDeviceInfo
OpenCL使用clGetDeviceInfo函数获取设备具体,函数原型如下:
cl_int clGetDeviceInfo (
cl_device_id device, //设备id号
cl_device_info param_name, //枚举变量,要获取的设备信息名称
size_t param_value_size, //参数类型大小
void *param_value, //参数值
size_t *param_value_size_ret //参数类型大小
);
这个函数需要调用两次,第一次获取参数类型大小,第二次获取参数。
2.代码实例
2.1 tool.h 与tool.cpp
见:http://www.cnblogs.com/xudong-bupt/p/3582780.html
2.2 QueryDeviceInfo.cpp
#include <stdio.h>
#include <stdlib.h>
#include "tool.h"
#include <CL/cl.h> int main()
{
///Get first available Platform
cl_platform_id platform;
getPlatform(platform); ///get first available GPU
cl_device_id *devices=getCl_device_id(platform); char *value;
size_t valueSize;
size_t maxWorkItemPerGroup;
cl_uint maxComputeUnits=;
cl_ulong maxGlobalMemSize=;
cl_ulong maxConstantBufferSize=;
cl_ulong maxLocalMemSize=; ///print the device name
clGetDeviceInfo(devices[], CL_DEVICE_NAME, , NULL, &valueSize);
value = (char*) malloc(valueSize);
clGetDeviceInfo(devices[], CL_DEVICE_NAME, valueSize, value, NULL);
printf("Device Name: %s\n", value);
free(value); /// print parallel compute units(CU)
clGetDeviceInfo(devices[], CL_DEVICE_MAX_COMPUTE_UNITS,sizeof(maxComputeUnits), &maxComputeUnits, NULL);
printf("Parallel compute units: %u\n", maxComputeUnits); ///maxWorkItemPerGroup
clGetDeviceInfo(devices[], CL_DEVICE_MAX_WORK_GROUP_SIZE,sizeof(maxWorkItemPerGroup), &maxWorkItemPerGroup, NULL);
printf("maxWorkItemPerGroup: %zd\n", maxWorkItemPerGroup); /// print maxGlobalMemSize
clGetDeviceInfo(devices[], CL_DEVICE_GLOBAL_MEM_SIZE,sizeof(maxGlobalMemSize), &maxGlobalMemSize, NULL);
printf("maxGlobalMemSize: %lu(MB)\n", maxGlobalMemSize//); /// print maxConstantBufferSize
clGetDeviceInfo(devices[], CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE,sizeof(maxConstantBufferSize), &maxConstantBufferSize, NULL);
printf("maxConstantBufferSize: %lu(KB)\n", maxConstantBufferSize/); /// print maxLocalMemSize
clGetDeviceInfo(devices[], CL_DEVICE_LOCAL_MEM_SIZE,sizeof(maxLocalMemSize), &maxLocalMemSize, NULL);
printf("maxLocalMemSize: %lu(KB)\n", maxLocalMemSize/); free(devices);
return ;
}
执行结果:

3.其他
在安装了OpenCL的平台,可以使用命令:clinfo
The OpenCL Specification : https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf
GPGPU OpenCL 获取设备信息的更多相关文章
- Android 获取设备信息 异常
/**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ ...
- React Native(五)——获取设备信息react-native-device-info
心酸史: 自从接触rn开始后,越来越多的引入第三方组件而开始的配置文件,让自己一再头疼: 明明是按照官方文档一步一步的配置,为什么别人可以做到的自己却屡屡出错,真是哭笑不得--从微信分享react-n ...
- 微信小程序 --- 获取设备信息
获取设备信息: wx.getSystemInfo model:手机型号 pixelRatio:设备像素比 windowWidth:窗口宽度 windowHeight:窗口高度 language:语言 ...
- PhoneGap获取设备信息
一. 获取设备信息的方法列表(如果没有或者检测不出来就显示undefined) 1.device.name 设备名称(一些国产机检测不出来) 2.device.model ...
- appium自动化测试框架——封装获取设备信息类
在上一节中,我们已经解决了如何在python中执行cmd,并获取执行结果.下面就小小实战一下,获取设备信息. 一.思路 1.windows上获取设备信息的方法 输入dos命令“adb devices” ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载五(使用PhoneGap获取设备信息)
除了能够将HTML页面打包成可以直接安装运行的APP外,PhoneGap的一个最大优势在于可以通过JavaScript调用设备来访问设备上的硬件信息,从而实现一些原本只有依靠原生SDK才能够达到的目的 ...
- 微信小程序把玩(三十八)获取设备信息 API
原文:微信小程序把玩(三十八)获取设备信息 API 获取设备信息这里分为四种, 主要属性: 网络信息wx.getNetWorkType, 系统信息wx.getSystemInfo, 重力感应数据wx. ...
- 测试成长记录:python调adb无法获取设备信息bug记录
背景介绍: 一直在负责公司Android自动化的编写工作,采用的是uiautomator2,需要获取设备id来连接设备,就是 adb devices 问题描述: 之前一直用 subprocess.ch ...
- ios获取设备信息总结
1.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name; //获取设备所有者的名 ...
随机推荐
- 什么是泛型 转载自http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html
我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类 ...
- async await 使用笔记
JavaScript的网络请求异步的,即网络请求不会阻塞当前 js 代码的继续执行,而是通过回调的方式,网络请求的代码块中注入回调函数,当网络请求完成,会触发相应的事件,通过触发事件来执行注册的回调函 ...
- 【BZOJ 3482】 3482: [COCI2013]hiperprostor (dij+凸包)
3482: [COCI2013]hiperprostor Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 277 Solved: 81 Descrip ...
- NOIP 初赛笔记
// zj蒟蒻瑟瑟发抖.. // 停课了.要好好努力!——10月8日8:29于机房 1. 1946 年 美国 -> 第一台计算机 2. 真空电子管 -> 晶体管 -> 集成 -> ...
- [BZOJ1799][AHOI2009]同类分布(数位DP)
1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec Memory Limit: 64 MBSubmit: 1635 Solved: 728[Submit][S ...
- hdu 3046 最小割
每个栅栏其实就是一条边,修一些栅栏,使得狼不能抓到羊,其实就是求一个割,使得羊全在S中,狼全在T中. #include <cstdio> #include <cstring> ...
- Spark参数配置总结
- Cocoapods报错Unable to satisfy the following requirements
很多时候我们都会去gitHub上down别人的源码去研究,如果别人的项目用pod集成了,当我们下载好后不外乎cd到项目根目录pod install一下,集成项目所需的库类.今天在我pod instal ...
- HttpURLConnection与 HttpClient 区别/性能测试对比
HttpClient是个开源框架,封装了访问http的请求头,参数,内容体,响应等等, HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便 HttpClient实 ...
- centos安装jdk文件
1.到oracle官网选择要安装的jdk版本 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ...