opencl(2)平台、设备、上下文的获取与信息获取
1:平台
1)获取平台id
cl_int clGetPlatformIDs(
cl_uint num_entries, //想要获取的平台数
cl_platform_id * flatformids, //获取到设备会保存在该指针中
cl_uint *platforms //环境中存在的平台数量
)
2)获取指定平台的info
cl_int clGetPlatformInfo(
cl_platform_id platform_id, //platform平台
cl_platform_info param_name, //获取信息的类型
size_t param_value_size , //所要保存信息的字节大小
void *param_value, //所要保存的地址
size_t param_value_size_ret //实际信息的数据大小
)
信息类型:
CL_PLATFORM_PROFILE 确认系统是否支持完整的opencl版本还是嵌入式版本(FULL_PROFILE EMBEDDED_PROFILE)
CL_PLATFORM_VERSION
CL_PLATFORM_NAME
CL_PLATFORM_VENDOR 返回和平台相关的厂商
CL_PLATFORM_EXTENSIONS 查看平台支持的浮点精度扩展
2:设备
1)获取设备id
cl_int clGetDeviceIDs(
cl_platform_id platform_id, //所选平台
cl_device_type device_type, //设备类型
cl_uint num_entries, //想要获取的设备数
cl_device_id *devices, //保存设备的地址
cl_uint num_devices //总设备数
)
2) 获取所得设备的信息
cl_int cl_GetDeviceInfo(
cl_device_id device_id, //所选设备
cl_device_info param_name, //信息类型
size_t param_value_size, //所要保存的信息字数
void* param_value, //信息保存的地址
size_t param_value_size_ret //信息应有的字节数
)
信息的类型
CL_DEVICE_EXTENSION 支持的扩展类型
CL_DEVICE_GLOBAL_MEM_SIZE 全局设备内存大小
CL_DEVICE_ADDRESS_BITS 设备地址空间大小
CL_DEVICE_PREFERRED_VECTOR_EIDTH_CHAR/SHORT/INT/LONG/DOUBLE 向量长度
3:上下文
1)根据设备类型,创建上下文
cl_context clCreateContext(
cl_context_properties *properties,//属性列表
cl_uint num_devices, //设备数量
const cl_device_id *devices, //设备列表
void* ftn_notfy(
const char* errinfo,
const char* private_info,
size_t cb,
void *user_data),
void *user_data, //提供报错信息
cl_int *errcode_ret //错误信息大小
)
2)根据设备属性,创建上下文
cl_context clCreateContext(
cl_context_properties *properties,//属性列表
cl_device_type device_type
void* ftn_notfy(
const char* errinfo,
const char* private_info,
size_t cb,
void *user_data),
void *user_data, //提供报错信息
cl_int errcode_ret //错误信息大小
)
3)获取上下文信息
cl_int clGetContextInfo(
cl_context contxet, //上下文
cl_context_info param_name,//信息参数名称
size_t param_value_size, //所要保存的大小
void* param_value, //信息存放的地址
size_t param_value_size_ret //信息的大小
)
信息类型:
CL_CONTEXT_REFERENCE_COUNT 引用计数
CL_CONTEXT_DEVICES 上下文中包含的设备
CL_CONTEXT_PROPERTIES 属性参数
4)管理上下文的引用
cl_int clRetainContext(cl_context context) 引用计数+1
cl_int clReleaseContext(cl_contetx contex) 引用计数-1
创建时,计数加1,