《OpenCL编程指南》第三章知识点整理(未完待续)
第三章 平台、上下文和设备
1、opencl平台
cl_intclGetPlatformIDs(cl_uint num_entries,cl_platform_id * platforms,cl_uint *num_platforms)
功能一:查询可用平台数,需要将platforms设为NULL,将num_entries设为0.
判断出错的两个条件:函数返回值不等于CL_SUCCESS,或者,获取到的平台数小于等于0.
进行错误处理,输出错误原因为找不到平台。
功能二:查询可用平台列表,需要将num_entries设置为查询到的平台数,将num_platforms设为NULL。
(注意:每次获取到的OpenCL平台及设备的ID列表中的各个ID号均不同。)
判断出错的条件:函数返回值不等于CL_SUCCESS.
进行错误处理,输出错误原因为找不到平台。
相关代码如下:
cl_intclGetPlatformInfo(cl_platform_id platform,cl_platform_info param_name,size_tparam_value_size,void * param_value,size_t * param_value_size_ret)
功能一:查询返回信息字符串的大小,需要将param_value_size和param_value的值分别置为0和NULL。
判断出错的条件:函数返回值不等于CL_SUCCESS.
进行错误处理,输出错误原因为找不到平台的某个指定信息。
功能二:查询指定信息,需要将param_value_size设置为查询到的信息字符串的大小,将param_value_size_ret设置为NULL,param_value将返回查询到的信息。
判断出错的条件:函数返回值不等于CL_SUCCESS.
进行错误处理,输出错误原因为找不到平台的某个指定信息。
相关代码如下:
本机所有平台及其相关信息如下:
2、opencl设备
(各个平台可能会分别关联一组计算设备,应用程序将利用这些计算设备执行代码;平台与设备之间的区别在于,平台对应计算机中安装的SDK开发包,而设备对应计算机中的硬件CPU或者GPU,而对于含有一个CPU和一个GPU的异构计算机来说,安装在计算机上的所有软件平台均关联到了所有OpenCL硬件,当查询电脑上的所有平台以及对应的设备时,显示如下所示:
两个平台均关联了电脑上唯一的CPU和唯一的GPU设备。
经程序测试,opencl的默认设备为GPU。
)
cl_intclGetDeviceIDs(cl_platform_id platform,cl_device_type device_type,cl_uintnum_entries,cl_device_id * devices,cl_uint * num_devices)
功能一:查询设备数