OPencl学习笔记

上周开始学习opencl实战这本书,因同时在忙本溪的一个路灯的调试项目,进展并不多。现将前两章的学习笔记整理如下:

奋斗软件安装过程: 

首先下载可以编译opencl的软件开发包(software development kit ,SDK).

两种:AMDSDK和Nvidia sdk。根据你的操作系统和具体的硬件配置选择相应的。

安装sdk前要确保两点:1、硬件系统的生产厂商和具体型号以及该款硬件是否支持opencl、2、了解sdk的重要文件和基本知识。

  编译任何C、C++之前都需要相应的头文件和库文件:头文件声明了常数、数据结构和函数;库文件包含了函数的可执行代码【大多数Opencl应用程序只有一个头文件:cl.h,在windows上,cl.h文件位于CL路径下】

  AMD和nvidia都提供了名为OPENCL的库文件(windows 下是OpenCL.dll文件),另外还提供了了一个ICD(可安装的客户驱动)

  在编译OpenCL程序时,需要告诉连接器如何访问主要的OPenCL库文件。但是并不需要指出ICD的名字和路径,这以为这你可以在不知道用户硬件类型的前提下发布你的程序。

  在运行时,应用程序必须能够访问ICD文件,在windows上,和厂商相关的库文件上是设定在注册表之中的,在安装SDK时,它会仿真注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors。

  Opencl程序在windows上执行时,它会先查看ICD的文件名,然后加载所需要的对应库文件。故,ICD库文件必须放在连接器的搜索路径下。ICD的默认搜索路径为:C:\Windows\system or

  windows上安装AMD显卡驱动。(起初安成CUDA的GPU驱动了)

 

  奋斗Chapter1

Java的成功在于“一次编写,各处运行”;OPENCL秉性类似的理念:“一次编写、各设备上运行”因此,你不需要针对特定厂商的硬件,去学习他们的专用编程语言。而C、C++编写的程序只是在特定的编译目标上运行。

 

  并发——顺序代码通过任务调度在进程(线程)间实现资源分享,并行执行。

并行编程——将不同的运算任务分配给不同的处理单元,同时并行执行。【在opencl中这些任务被称为内核

  

 内核——是针对一个或多个兼容Opencl的设备而特别编写的函数,并通过主机应用程序发送到相应的一个或多个设备上。

  主机应用程序——是一个在我们称为主机的用户开发系统上运行的C/C++应用程序。主机可以将内核程序送到计算机显卡的GPU上执行也可以选择当前的cpu作为执行目标。

主机应用程序通过上下文(context)的容器来管理所连接的设备。主机必须从程序(program)的内核容器中选择函数,才能创建出内核函数,然后再向内核函数中调入相应的参数数据,并发送到指令序列的数据结构中。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Heterogeneous Computing with OpenCL 2.0 teaches OpenCL and parallel programming for complex systems that may include a variety of device architectures: multi-core CPUs, GPUs, and fully-integrated Accelerated Processing Units (APUs). This fully-revised edition includes the latest enhancements in OpenCL 2.0 including: • Shared virtual memory to increase programming flexibility and reduce data transfers that consume resources • Dynamic parallelism which reduces processor load and avoids bottlenecks • Improved imaging support and integration with OpenGL Designed to work on multiple platforms, OpenCL will help you more effectively program for a heterogeneous future. Written by leaders in the parallel computing and OpenCL communities, this book explores memory spaces, optimization techniques, extensions, debugging and profiling. Multiple case studies and examples illustrate high-performance algorithms, distributing work across heterogeneous systems, embedded domain-specific languages, and will give you hands-on OpenCL experience to address a range of fundamental parallel algorithms. Updated content to cover the latest developments in OpenCL 2.0, including improvements in memory handling, parallelism, and imaging support Explanations of principles and strategies to learn parallel programming with OpenCL, from understanding the abstraction models to thoroughly testing and debugging complete applications Example code covering image analytics, web plugins, particle simulations, video editing, performance optimization, and more

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值