引言

opencl中,上下文(context)是一个抽象容器并存在于主机端,它能协调主机与设备之间的交互机制,管理设备上可以的内存对象,跟踪针对每个设备新建kernel和程序.

API函数clCreateContext

新建上下文的API函数是clCreateContext( )。其中properties用来限定上下文的范围。它可以提供指定的具体硬件平台,开启OpenGL/OpenCL的互操作性或者开启其他着眼于未来的参数。

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)

其中各个参数的含义:

  • properties 指向一个列表,其中有上下文属性名称及其对应的值。
  • CL_CONTEXT_PLATFORM         cl_platform_id        指定要使用的平台
  • num_devices 是参数 devices 中设备的数目。
  • devices是一个指针,指向clGetDeviceIDs所返回的设备的列表 。
  • pfn_notify 是应用所注册的一个回调函数。OpenCL 的实现可以用这个回调函数来报告此上下文中所发生的错误。如果 pfn_notify 是 NULL,就是没有注册回调函数。当 pfn_notify 被调用时,会将 user_data 作为参数 user_data 传递给 pfn_notify。
  • user_data 指向用户所提供的数据。ueser_data可以是NULL.
  • errcode_ret 用来返回错误码。

这个pfn_notify的回调函数的参数是:

  • errinfo 是一个指针,指向一个错误字符串。
  • private_info 和 cb 会提供一个指向二进制数据的指针,这些数据由 OpenCL 的实现所返回,可以用来记录一些附加信息来帮助调试错误。
  • user_data 指向用户所提供的数据。

创建一个 OpenCL 上下文。一个 OpenCL 上下文与一个或多个设备一起创建。OpenCL 运行时会使用上下文来管理命令队列、内存、程序和内核等对象,并在上下文所指定的一个或多个设备上执行内核。OpenCL规范还提供了不需要新建整个设备列表的API,clCreateContestFromType()允许我们自动新建所有指定设备类型的上下文。新建完上下文之后,clGetContextInfo()函数可用来查询现在设备数量和设备结构的信息。

参考文献

[1] Aaftab Munshi, Benedict R. Gaster,Timothy G.Mattson,James Fung and Dan GinsBurg,"OpenCL Programming Guide"Publisher:Pearson Education.

[2] Benedict R. Gaster, Lee Howes and David R.Kaeli, "Heterogeneous Computing with OpenCL".

========================================================
转载请注明出处:http://blog.csdn.net/songzitea/article/details/12260773
========================================================

最新文章

  1. 免费开源分布式系统日志收集框架 Exceptionless
  2. 课前HTML基础
  3. UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?
  4. frp内网穿透配置
  5. 高吞吐量的分布式发布订阅消息系统Kafka--spring-integration-kafka的应用
  6. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
  7. java 调用 .net webservice
  8. 如何在CentOS 7上修改主机名
  9. Android ListView条目全选功能,不用checkbox实现!
  10. (转)addEventListener()与removeEventListener()详解
  11. 【NO.14】jmeter-处理结果
  12. C#Linq技术中SelectMany(...)函数的内部实现的伪代码
  13. Windows 2012 下Redmine安装和环境搭建
  14. UVA10723 电子人的基因 Cyborg Genes
  15. redis的架构(一)
  16. markdown 相关零碎知识
  17. 【算法】解析IEEE 754 标准
  18. Shell-11--for
  19. SpringBoot集成Mybatis(0配置注解版)
  20. 软工网络15团队作业4——Alpha阶段敏捷冲刺7.0

热门文章

  1. C# 反射 表达式树 模糊搜索
  2. 前端开发bower包管理器
  3. Lost connection to MySQL server at ‘reading initial communication packet', system error: 0 mysql远程连接问题
  4. 批量翻转PNG图片
  5. 通过EL表达式,后台数据传到前台,引号及后面的数据被截断的问题:
  6. php 常用几个函数
  7. javascript ajax请求
  8. A transition animation compatible Library.
  9. (MVC)验证用户是否登录 登录认证
  10. JDK的帮助文档