Windows Opencl编程:第三天(整理相关函数信息)

12 篇文章 0 订阅

Windows C++ Opencl编程:第三天

今天整理了一些常用函数。

1.平台信息查询
可以使用以下功能获取可用的平台列表。

cl_int clGetPlatformIDs(cl_uint 			num_entries, 
	 	 	 	         cl_platform_id     *platforms, 
	 	 	 	         cl_uint            *num_platforms) 

num_entries是可cl_platform_id平台的条目数。 如果平台不是 NULL,则num_entries必须大于零

platforms返回找到的OpenCL平台的列表。platforms中返回的cl_platform_id值可用于标识特定的OpenCL平台。如果platforms参数为NULL,则忽略此参数。返回的OpenCL platforms的数量是num_entries指定的值的最小值或可用OpenCL平台的数量。

num_platforms返回可用OpenCL平台的数量。如果num_platforms为空,则忽略此参数。

如果num_entries等于零且platforms不为NULL,或者num_platformsplatforms都为NULL,则clGetPlatformIDs返回CL_INVALID_VALUE;如果函数执行成功,则返回CL_SUCCESS。

cl_int clGetPlatformInfo(cl_platform_id    platform,
						  cl_platform_info  param_name,            
						  size_t            param_value_size,           
						  void       *param_value, 
                          size_t     *param_value_size_ret) 

获取有关OpenCL平台的特定信息。表1指定了可以使用clGetPlatformInfo查询的信息。

platformclGetPlatformIDs返回的平台ID,可以为空。如果platform为NULL,则行为是由实现定义的。

param_name是一个枚举常量,用于标识要查询的平台信息。它可以是表4.1中规定的下列值之一。它可以是表1中规定的下列值之一。

param_value是一个指向内存位置的指针,其中将返回表1中指定的给定param_name的适当值。如果param_value为空,则忽略它。

param_value_size指定param_value指向的内存大小(以字节为单位)。这个字节大小必须大于等于表1中指定的返回类型的大小。

param_value_size_ret返回param_value查询的数据的实际大小(以字节为单位)。如果param_value_size_ret为空,则忽略它。

cl_platform_info返回类型描述
CL_PLATFORM_PROFILEchar[]

OpenCL 配置文件字符串。 返回实现支持的配置文件名称。返回的配置文件名称可以是以下字符串之一:

FULL_PROFILE - 如果实现支持OpenCL规范(功能定义为核心规范的一部分,并且不需要支持任何扩展)。

EMBEDDED_PROFILE - 如果实现支持OpenCL嵌入式概要文件。嵌入式概要文件被定义为每个OpenCL版本的子集。

CL_PLATFORM_VERSIONchar[]

OpenCL版本字符串。返回实现支持的OpenCL版本。此版本字符串的格式如下:

OpenCL<space><major_version.min or_version><space><platformspecific information>

major_version.minor_version 的返回值将为1.0

CL_PLATFORM_NAMEchar[]平台名称字符串。
CL_PLATFORM_VENDORchar[]平台供应商字符串。
CL_PLATFORM_EXTENSIONSchar[]

返回平台支持的扩展名列表(扩展名本身不包含任何空格)。与此平台关联的所有设备都必须支持此处定义的扩展。

表1 OpenCL平台查询


如果函数执行成功,clGetPlatformInfo将返回CL_SUCCESS。如果platform不是有效的平台,它将返回CL_INVALID_PLATFORM;如果param_name不是受支持的值之一,或者param_value_size指定的字节大小小于表1中指定的返回类型的大小,并且param_value不是空值,则返回CL_INVALID_VALUE。


2.设备查询
可以使用以下函数获取平台上可用设备的列表。

cl_int clGetDeviceIDs(cl_platform_id   platform, 
     					cl_device_type   device_type, 
 	 	 	 	        cl_uint          num_entries, 	 	 
 	 	 	            cl_device_id     *devices,
 	 	 	            cl_uint          *num_devices) 

OpenCL规范没有描述API调用返回的错误代码的优先顺序。clgetdeviceid可以返回平台中存在的与设备类型匹配的所有或部分实际物理设备。

platform是clGetPlatformIDs返回的平台ID,可以为空。如果platform为NULL,则行为是由实现定义的。

device_type是一个位字段,用于标识OpenCL设备的类型。device_type可用于查询特定的OpenCL设备或所有可用的OpenCL设备。
表2规定了device_type的有效值。

cl_device_type描述
CL_DEVICE_TYPE_CPU

作为主处理器的OpenCL设备。主机处理器运行OpenCL实现,是单核或多核CPU。

CL_DEVICE_TYPE_GPU

一种作为GPU的OpenCL设备。这意味着该设备还可以用于加速3D API,如OpenGL或DirectX。

CL_DEVICE_TYPE_ACCELERATOR

专用的OpenCL加速器(例如IBM CELL Blade)。使用PCIe主机等外围设备与这些设备互连。

CL_DEVICE_TYPE_DEFAULT

系统中的默认OpenCL设备。

CL_DEVICE_TYPE_ALL

系统中可用的所有OpenCL设备。

表2 OpenCL设备类别列表


num_entries是可以添加到设备的cl_device_id的个数。如果devices不为NULL,则num_entries必须大于零。

devices返回找到的OpenCL设备的列表。设备中返回的cl_device_id值可用于标识特定的OpenCL设备。如果devices参数为NULL,则忽略此参数。返回的OpenCL设备数是num_entries指定的值的最小值,或者是其类型与device_type匹配的OpenCL设备的数量。

num_devices返回与设备类型匹配的OpenCL设备数。如果num_devices为空,则忽略此参数。

如果平台不是有效的平台,clGetDeviceIDs将返回CL_INVALID_PLATFORM;如果device_type不是有效值,则返回CL_INVALID_DEVICE_TYPE;如果num_entries等于零且devices不为NULL,或者num_devicesdevices都为NULL,则返回CL_INVALID_VALUE,如果找不到与设备类型匹配的OpenCL设备,则返回CL_DEVICE_NOT_FOUND;如果函数成功执行,则返回CL_SUCCESS。

应用程序可以查询clGetDeviceIDs返回的OpenCL设备的特定功能。这可由应用程序用来确定要使用的设备。

cl_int clGetDeviceInfo(cl_device_id    device,
					   cl_device_info  param_name, 
       				   size_t          param_value_size,
              		   void            *param_value, 
      				   size_t          *param_value_size_ret) 

传送至clGetDeviceInfo查看详细解析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值