引言

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中上下文的更多相关文章

  1. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  2. C#中上下文Context的理解

    上下文指的是 进程间占有的资源空间. 当一个进程时间片到了或者资缺的时候就会让出cpu 当另一个进程开始始用CPU之前,系统要保存即将退出进程的执行状态,以便轮到时间片或有资源的时候现场恢复.这就所谓 ...

  3. flask微电影系统开发中上下文处理器

    在做日志模块开发的过程中,我们遇到了一个问题,就是日期的问题,我们这个时间就要用到上下文处理器来解决问题,他的作用就是可以在我们固定模块中进行传递,我们的模块如下 @admin.context_pro ...

  4. .NET里简易实现AOP

    .NET里简易实现AOP 前言 在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比 ...

  5. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...

  6. Web.xml详解(转)

    这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一.            Web.xml详解: (一)  web.xml加载过程(步骤) 首 ...

  7. 初试Code First(附Demo)

    写在前面 新建项目 安装EntityFramework程序包 创建模型 创建上下文DbContext 创建数据库.读/写数据 配置连接字符串 Code First 迁移 示例Demo下载 后记 以前逛 ...

  8. Code First :使用Entity. Framework编程(7) ----转发 收藏

    第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...

  9. Structs框架

    一.准备工作及实例 1.解压struts-2.1.6-all.zip(structs网上下载) apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. ...

随机推荐

  1. java_设计模式_状态模式_State Pattern(2016-08-16)

    定义: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 类图: 状态模式所涉及到的角色有: ● 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,同时维护一个 ...

  2. prime,素数的判断——c语言

    输入一个数a,求他是否是素数(用函数) 程序: #include<stdio.h> int prime(int a)-----------------------------------/ ...

  3. 【BZOJ3527】【FFT】力

    [问题描述]给出n个数qi,给出Fj的定义如下:令Ei=Fi/qi.试求Ei.[输入格式]输入文件force.in包含一个整数n,接下来n行每行输入一个数,第i行表示qi.[输出格式]输出文件forc ...

  4. ASP.NET中扩展FileUpload的上传文件的容量

    ASP.NET中扩展FileUpload只能上传小的文件,大小在4MB以内的.如果是上传大一点的图片类的可以在web.config里面扩展一下大小,代码如下 <system.web> &l ...

  5. VB版本查询快递单号源码

    能查询各大快递单号,包括申通快递,圆通快递,韵达快递等国内超过90家以上快递单号查询, 如果想快速搭建一个快递单号查询站我推荐这个,这是地址www.aikuaidi.cn,我分享一个VB Functi ...

  6. baba 运动网

    import com.sun.image.codec.jpeg.* 找不到包     在Myeclipse中编译项目时,如果提示类似 com.sun.image.codec.jpeg.* 下: imp ...

  7. Servlet 是否线程安全 看完便知

    Servlet 是否线程安全 看完便知 转自:http://blog.sina.com.cn/s/blog_6448959f0100kct7.html     摘 要:介绍了Servlet多线程机制, ...

  8. MVC简单分页(未实现无刷新分页)

    分页Html辅助方法 using System.Text; using System.Web: using System.Web.Mvc; namespace System.Web.Mvc { pub ...

  9. 《agile java》First : 起步 + 章节练习题

    第一章节:起步 1.创建简单Java类2.创建测试类3.使用JUnit4.学习构造函数5.重构代码 涉及知识:TDD.UML TDD: Test Driven Development, 测试驱动开发. ...

  10. 14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构

    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构 一个InnoDB 表的物理行结构取决于在创建表指定的行格式 默认, Inno ...