规范OpenCL应用的运行和开发环境

fronteer 2014-06-05 02:04:21
在本论坛上很多兄弟贴出的问题,似乎和 OpenCL 的运行环境有关, 还没到需要 debugging 代码的那一步. 为帮助你规范你的OpenCL 环境, 这里提出几个要注意的地方:

1. OpenCL 应用的运行环境是由 GPU 驱动的安装过程确定的, 比如你的机器上有 AMD的集显或独显, 装完OEM厂商提供的或AMD网上下载的驱动后, 你的 OpenCL 应用的运行环境就具备了.

2. OpenCL 应用的开发环境是有各厂商的开发包提供的, 需要从各厂商的网站下载安装, 如 AMD APP SDK 提供 OpenCL 应用的 C/C++ 开发环境(头文件,export 库和 代码例子). Intel 和 Nvidia 和 OpenCL 开发包类似,需要单独下载安装.

3. 符合 OpenCL 标准的程序通常能用各个厂家的 OpenCL SDK 进行编译, 但如果程序中用了厂家的 OpenCL 扩展,则只能用该厂家的OpenCL SDK进行编译,并且只能在该厂家的 OpenCl Runtime 上运行,如使用CL_MEM_PERSISTENT_MEM_AMD 类型设备内存的代码, 只能在 AMD 的OpenCL 环境上编译和运行

4. 很多机器上可能装备了多个厂家的 GPU, 如 Intel 的集显加 AMD 的独显, 这时你的机器上很可能同时具备 Intel 和 AMD 的运行环境, 你的 OpenCL 代码需要明白自己正使用的是那个厂家的 OpenCL Platform 和 OpenCL device. AMD 的 OpenCL 运行环境是最先支持 OpenCL 1.2 的, 成熟度最高. 在测试你的 OpenCL 代码时需要确定你是使用的哪个 OpenCL Runtime 出的问题.

...全文
1345 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinlj0 2014-11-25
  • 打赏
  • 举报
回复
引用 4 楼 fronteer 的回复:
2) 另外我比较喜欢 AMD 的OpenCL 的地方是 AMD 拥有APU, 即将传统 X86 CPU 和 GPU做在一个芯片里面, 这点很有意思. 在数据中心,云计算等环境, 用户商关注的并不是单个物理机器纯粹的计算能力, 而是总体的服务器节点群总体的计算能力. APU可以很容易地集成到薄服务器中, 如华为或CISCO的刀片, 这能在同样计算能力的情况下,极大减小对机房空间和供电等设施的成本.
注意:华为已经证实为回教所控制。 提“刀片”是什么意思,大家应该明白。 APU绝对不是AMD的产品,AMD为日本公司,现已经为中国公司,具体为什么请询问消息灵通人士。
fronteer 2014-06-24
  • 打赏
  • 举报
回复
引用 3 楼 jiangcaiyang123 的回复:
你们为什么这么关注AMD的OpenCL? 其实NVIDIA的OpenCL安装也是非常简单的。只需要你安装CUDA。 下载地址:https://developer.nvidia.com/cuda-downloads
我本人对你这个问题的回达是这样的 1) 我本人是底层软件大开发人员, 通常只工作在 C/C++ 这个层次。 OpenCL 从编程角度讲, 刚好提供了一个C/C++的 Host端API 和类 C及C++ 的kernel 端编程。 虽然这个对很多开发用户而言,显得并不够高级,但对我来说,已经很舒服了, 我并不需要太傻瓜型的开发接口. Nvidia 虽然也提供 OpenCL 的实现, 但其对 OpenCL 最新标准的支持程度, 还有其OpenCL堆栈的性能,和AMD的 OpenCL 实现还是有差距的,另外由于 Cuda 的生态系统很强, 我感觉Nvdia 对 OpenCL 的重视不够. 2) 另外我比较喜欢 AMD 的OpenCL 的地方是 AMD 拥有APU, 即将传统 X86 CPU 和 GPU做在一个芯片里面, 这点很有意思. 在数据中心,云计算等环境, 用户商关注的并不是单个物理机器纯粹的计算能力, 而是总体的服务器节点群总体的计算能力. APU可以很容易地集成到薄服务器中, 如华为或CISCO的刀片, 这能在同样计算能力的情况下,极大减小对机房空间和供电等设施的成本. 3) 第三点是 APU 能让计算资源更灵活的被使用. 一个大的应用中, 有部分计算是比较适合 CPU 做的, 另一部分更适合GPU做, APU 能让这种分配和相关的数据交换成本更低, 能耗更低. 特别是 AMD 的 APU 朝 HSA 架构发展,GPU端能直接使用CPU端的虚拟地址, 能让 APU中的 GPU 去解决更多类型的应用问题, 使异构计算对应用的适应性会大大提升.
lcwyylcwyy 2014-06-24
  • 打赏
  • 举报
回复
引用 3 楼 jiangcaiyang123 的回复:
你们为什么这么关注AMD的OpenCL? 其实NVIDIA的OpenCL安装也是非常简单的。只需要你安装CUDA。 下载地址:https://developer.nvidia.com/cuda-downloads
英伟达的技术私有化,最受影响的就是程序员,很多时候CUDA的效率很好,但是不跨平台,而CL跨平台,效率相对有些差距,所以开发时主要以CL为主,毕竟可以少些一个平台的代码。而且CUDA中,如果按照driverAPI方式写,和CL差不多,调用函数不同而已,还不能在非N设备上(PGI是个例外)使用,不如支持CL,维护成本低,而且按照CUDA和CL在上层开发技术中,相似度很高,很容易从CUDA中移植过来。对于CL和CUDA只是开放和私有化的不同,但是私有化不利于技术发展,所以支持CL,同时研究CUDA,但产品主要以CL为主,CUDA只用于研究或特定的科学计算。
outstander 2014-06-24
  • 打赏
  • 举报
回复
引用 3 楼 jiangcaiyang123 的回复:
你们为什么这么关注AMD的OpenCL? 其实NVIDIA的OpenCL安装也是非常简单的。只需要你安装CUDA。 下载地址:https://developer.nvidia.com/cuda-downloads
OpenCL是一个开放的由各大厂商(包括Intel,Nvidia,AMD,Apple等等)参与共同支持的工业标准,相对于CUDA的一大优势就是跨平台。对于需要进行跨平台开发,以及使用其他厂商硬件特点的程序开发者来说当然得关注不同厂商的SDK咯~
彩阳 2014-06-22
  • 打赏
  • 举报
回复
你们为什么这么关注AMD的OpenCL? 其实NVIDIA的OpenCL安装也是非常简单的。只需要你安装CUDA。 下载地址:https://developer.nvidia.com/cuda-downloads
Snake2326 2014-06-19
  • 打赏
  • 举报
回复
好的,为以后学习opencl得到了帮助
lcwyylcwyy 2014-06-05
  • 打赏
  • 举报
回复
这个必须顶,

602

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧