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_platforms和platforms都为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查询的信息。
platform是clGetPlatformIDs返回的平台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_PROFILE | char[] | OpenCL 配置文件字符串。 返回实现支持的配置文件名称。返回的配置文件名称可以是以下字符串之一: |
CL_PLATFORM_VERSION | char[] | OpenCL版本字符串。返回实现支持的OpenCL版本。此版本字符串的格式如下: |
CL_PLATFORM_NAME | char[] | 平台名称字符串。 |
CL_PLATFORM_VENDOR | char[] | 平台供应商字符串。 |
CL_PLATFORM_EXTENSIONS | char[] | 返回平台支持的扩展名列表(扩展名本身不包含任何空格)。与此平台关联的所有设备都必须支持此处定义的扩展。 |
如果函数执行成功,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设备。 |
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_devices和devices都为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查看详细解析