Windows Opencl clCreateContext()函数

12 篇文章 0 订阅

Windows Opencl clCreateContext()函数

函数原型

cl_context clCreateContext(const cl_context_properties *properties, 
						   cl_uint              num_devices,  
 	 	 	 	 	      const cl_device_id    *devices, 
 	 	 	 	 	     void (*pfn_notify)(const char *errinfo,  
 	 	 	 	 	      const void *private_info, 
 	 	 	 	 	      size_t cb,void *user_data), 
 	 	 	 	 	      void *user_data, 
 	 	 	 	 	      cl_int *errcode_ret) 

创建OpenCL上下文。OpenCL上下文是用一个或多个设备创建的。OpenCL运行时使用上下文来管理命令队列、内存、程序和内核对象等对象,以及在上下文中指定的一个或多个设备上执行内核。

属性指定上下文属性名称及其相应值的列表。每个属性名后面紧跟着相应的所需值。列表以0结尾。支持的属性列表如表1所示。属性可以为空,在这种情况下,所选平台是实现定义的。

cl_context_properties enum属性值描述
CL_CONTEXT_PLATFORMcl_platform_id

指定要使用的平台。

表1 clCreateContext支持的属性列表

num_devices是在devices参数中指定的设备数。

devices是一个指针,指向clgetdeviceid为平台返回的唯一设备列表。

pfn_notify是一个可以由应用程序注册的回调函数。OpenCL实现将使用这个回调函数来报告在这个上下文中发生的错误的信息。这个回调函数可以由OpenCL实现异步调用。应用程序负责确保回调函数是线程安全的。此回调函数的参数为:

  1. errinfo是指向错误字符串的指针。
  2. private_infocb表示指向OpenCL实现返回的二进制数据的指针,该数据可用于记录有助于调试错误的附加信息。
  3. user_data是指向用户提供的数据的指针。

如果pfn_notify为空,则不注册回调函数。

当调用pfn_notify时,user_data将作为user_data参数传递。用户数据可以为空。

errcode_ret将返回适当的错误代码。如果errcode_ret为空,则不返回错误代码

clCreateContext返回一个有效的非零上下文,如果上下文创建成功,errcode_ret设置为CL_SUCCESS。否则,它将返回一个空值,并在errcode_ret中返回以下错误值:

  1. CL_INVALID_PLATFORM 如果属性为空且无法选择平台,或者在属性中指定的平台值不是有效的平台。
  2. CL_INVALID_VALUE 如果属性中的上下文属性名不是受支持的属性名,或者为支持的属性名指定的值无效,或者多次指定同一属性名。
  3. CL_INVALID_VALUE 如果设备为空。
  4. CL_INVALID_VALUE 如果num_devices等于零。
  5. CL_INVALID_VALUE 如果pfn_notify为NULL,但user_data不为NULL。
  6. CL_INVALID_DEVICE 如果设备包含无效设备或未与指定平台关联。
  7. CL_DEVICE_NOT_AVAILABLE 如果设备中的某个设备当前不可用,即使该设备是由clGetDeviceIDs返回的。
  8. CL_OUT_OF_HOST_MEMORY 如果在主机上分配OpenCL实现所需的资源失败。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值