《OpenCL实战》一第1章 OpenCL简介

  1. 云栖社区>
  2. 博客>
  3. 正文

《OpenCL实战》一第1章 OpenCL简介

异步社区 2017-05-02 09:45:00 浏览1589
展开阅读全文

本节书摘来异步社区《OpenCL实战》一书中的第1章,第1.1节,作者: 【美】Matthew Scarpino 译者: 陈睿 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 OpenCL简介

OpenCL实战

本章所含内容

  • 了解OpenCL的设计初衷及其好处
  • 介绍OpenCL的基本操作:主机和内核
  • 编写OpenCL应用程序

2010年的10月,高性能计算领域诞生了一项革命性的作品。由中国国家超级计算天津中心建造的Tianhe-1A终于走出迷雾,站在了世界高性能计算机之巅。Tianhe-1A的最高计算速度可达2566TFLOPS(trillion floating-point operations per second, 兆亿浮点指令每秒),而这比第二名的Cray’s Jaguar超级计算机足足快了一半。表1.1列出了世界前三名的超级计算机。


111

为什么在Tianhe-1A和Nebulae中出现的GPU会带来如此革命性的不同?要知道在2009年,世界上的前三名可是都没有包含GPU的,放眼前20名,也只有一台机器里面有GPU。而这张表清晰地表明配有GPU的两套系统不仅仅是在计算性能上有巨大的优势,而且在能耗上也相当经济。

使用GPU完成非图像程序,这也被称为通用GPU运算(general-purpose GPU computing),或者说GPGPU运算。在2010年以前,GPGPU运算还只是高性能计算界的新鲜玩意,并不受待见。但到了今天,工程师和科研人员都得出了统一的结论,CPU/GPU系统昭示着未来超级计算发展的方向。

现在的难题是:如何对这些混合架构的设备(hybrid device[1])编写程序?传统C或C++的编译目标一般都是CPU。Cray的专用语言Chapel和Cray的汇编语言(Cray Assembly Language CAL)也都秉承了这一理念。而反观Nvidia的CUDA(Compute Unified Device Architecture),它只能针对Nvidia的GPU,而非CPU,进行程序编写。

OpenCL(Open Computing Language)便是解决良策。OpenCL例程不仅可以在诸如AMD、Nvidia、Intel这些主流芯片厂商的GPU或CPU上执行,甚至还可以在Sony的PS3上运行。OpenCL不是专用语言,它是一项开放标准,因此你可以随意下载开发工具套件。当你在用OpenCL编程时,你根本不必担心芯片厂商或是计算内核的多少。你的代码成功编译后,不仅可以在AMD最新的Fusion芯片上执行,也可以在Intel Core芯片或是Nvidia的Fermi芯片,亦或是IBM的Cell Broadband Engine芯片上看到结果。

本书的目标就是要展示如何编写跨平台架构的应用程序,以及最大可能地利用硬件资源。然而在这一章只是要先完成对OpenCL语言的大致介绍。先从对OpenCL的优势和运行过程的了解开始,然后再编写一个简单而完整的应用程序。但在开始之前,我们还是有必要先来了解OpenCL的诞生过程。各个公司都花费了很大的精力来设计这门语言,一旦你理清了头绪,也就明白为什么我们有必要介绍OpenCL的“前世今生”了。

1.1 OpenCL的来临

x86架构在个人计算领域已经占有了绝对的统治性地位,但是在图像或是高性能计算领域,却没有哪个体系结构能够称王称霸。尽管像Nvidia的Fermi,或是AMD的Evergreen,亦或是IBM的Cell Broadband Engine等这些芯片的体系结构的目的都基本相同,但你却很难在它们之间找出共通之处。每个芯片都有自己的指令集,而且在OpenCL出现之前,如果想要在这三种不同的芯片上编程,你就必须要掌握三门不同的编程语言。

而在Apple,这帮隐士一般的理想主义者创造出了一系列难以置信的大受欢迎的消费电子产品,诸如iPhone、iPad、iPod以及Mac系列的个人电脑。但是,Apple并没有针对Mac个人电脑设计单独的芯片;而是选择从其他芯片制造商的产品中进行选型设计。如果Apple选择公司A的图像处理芯片用作它的新开发,则未来公司A的市场份额和对开发人员的吸引力便将会有一个大幅度的攀升。这也是每个芯片企业都唯Apple马首是瞻的根本原因。

2008年,Apple向芯片制造商抛出了这样一个问题:“为什么我们不搞一个通用接口,这样开发人员便省去了学习语言的时间,而能更加专注于对设备的编程?”这问题要是换做他人提出,像Nvidia、AMD、Intel和IBM这样的冷酷的开发商便会不置可否地嘲笑这个想法。但是没人敢笑Apple。虽然工期很赶,但是头头脑脑们还是凑时间碰面,在当年结束前便制订出了OpenCL的第一版草稿。

为了控制OpenCL的进度和开发,Apple和它的朋友们又成立了OpenCL工作组。它是Khronos Group众多工作组中的一个,而Khronos Group则是由多个公司组成的联盟,目的是为了推进图像多媒体的发展。成立之初至今,OpenCL 工作组已经发表了两个版本的标准。OpenCL v1.0发布于2008年,而OpenCL v1.1发布于2010年,最近的OpenCL v2.0预计将于2012年发布。

这一小节我们讨论了什么商业界会如此欢迎OpenCL,但你若对这门技术还持观望态度,我也很能理解这种想法。而下一节,我们将更深层次地讨论OpenCL的技术优点。希望通过相应的介绍,你能对OpenCL较之于传统编程语言的优势有更进一步的了解。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注