【异构计算】OpenCL中上下文
引言
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========================================================
【异构计算】OpenCL中上下文的更多相关文章
- Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- C#中上下文Context的理解
上下文指的是 进程间占有的资源空间. 当一个进程时间片到了或者资缺的时候就会让出cpu 当另一个进程开始始用CPU之前,系统要保存即将退出进程的执行状态,以便轮到时间片或有资源的时候现场恢复.这就所谓 ...
- flask微电影系统开发中上下文处理器
在做日志模块开发的过程中,我们遇到了一个问题,就是日期的问题,我们这个时间就要用到上下文处理器来解决问题,他的作用就是可以在我们固定模块中进行传递,我们的模块如下 @admin.context_pro ...
- .NET里简易实现AOP
.NET里简易实现AOP 前言 在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比 ...
- 系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
- Web.xml详解(转)
这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一. Web.xml详解: (一) web.xml加载过程(步骤) 首 ...
- 初试Code First(附Demo)
写在前面 新建项目 安装EntityFramework程序包 创建模型 创建上下文DbContext 创建数据库.读/写数据 配置连接字符串 Code First 迁移 示例Demo下载 后记 以前逛 ...
- Code First :使用Entity. Framework编程(7) ----转发 收藏
第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...
- Structs框架
一.准备工作及实例 1.解压struts-2.1.6-all.zip(structs网上下载) apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. ...
随机推荐
- React学习笔记(一) 基础知识
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我. React的基 ...
- C++线程类的封装
简单的C++线程操作的封装,使用了智能指针管理对象的释放. 可运行对象基类 class SimpleRunable:public RefCountedBase { public: SimpleRuna ...
- Frameset布局
<FRAMESET> <FRAME> <NOFRAMES> <IFRAME> ■ 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL. ...
- (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释
2015年3月24更新 添加了要加的配置域名解析器(否则会找不到域名) 一.创建该实验的的模型 配置完gate虚拟机的两张网卡后,就启动gate的转发 [root@localhost ro ...
- jquery学习之旅
在jQuery中,css()方法的功能是设置或获取元素的某项样式属性. $<"div">.css("font-weight","bold& ...
- 及其简易的js 倒计时插件
网上虽然有很多漂亮的且很实用的倒计时插件,但是,对于需要自己定制的倒计时来讲确实一个不小的障碍.最近我们的英语在线教育产品,在线考试模块需要用到一个计时器,所以顺势开发了一个自己的及时器. http: ...
- 使用awstats统计分析tengine日志访问量及各种http网站数据
下载awstats最新安装包并解压 cd /usr/local/src wget http://www.awstats.org/files/awstats-7.3.tar.gz tar -zxvf a ...
- ASP.NET MVC 中使用JavaScriptResult
在浏览器地址栏输入地址,在页面上想通过脚本弹出一个框,看到Controller下有个JavaScript方法,返回的类型是JavaScriptResult,于是想用这个方法弹出框, public Ac ...
- 关于Kingfisher--备用
序言--感谢好心大神分享 Kingfisher 是由 @onevcat 编写的用于下载和缓存网络图片的轻量级Swift工具库,其中涉及到了包括GCD.Swift高级语法.缓存.硬盘读写.网络编程.图像 ...
- 打造轻量级自动化测试框架WebZ
一.什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架,基于WebDriver. 设计该框架的初衷是:用自动化测试让测试人员从一些简单却重复的测试中解放出来.之所以用“关键字 ...