程序员的野心:让GPU像CPU一样运行

jopen 11年前

  7 月 5 日消息,GPU 代表的是图形处理单元,但是,这些小小芯片除了处理图形功能,还有其它用处。比如,Google 使用 GPU 来为人脑建模,Salesforce 则依赖 GPU 分析 推ter 微博数据流。GPU 很适合并行处理运算,也就是同时执行成千上万个任务。

  怎么做呢?你得开发一个新软件,让它挖掘 GPU 芯片的潜力。最近美国印第安纳大学计算机博士埃里克-浩克(Eric Holk)就作出尝试,他开发了一个应用程序来运行 GPU。浩克说:“GPU 编程仍然需要程序员管理许多低层细节,这些细节是与 GPU 执行的主要任务分离的。我们想开发一个系统,帮助程序员管理这些细节,让 GPU 在提高生产力的同时仍然有很好的性能。”

  一般来说,电脑计算任务大多由 CPU 完成。一个 CPU 处理一个计算序列,也就是所谓的一次处理一个线程,它必须尽可能快地执行。GPU 的设计初衷是一次处理多个线程,这些线程处理速度慢很多,但程序可以利用并行优势执行得更快一些,就像超级电脑一样。

  浩克称,今天,CPU 已经能执行并行运算了,多核也很流行,但它们主要还是针对单线程优化的。

  GPU 术语直到 1999 年才出现,但在此之前已经有早期的视频处理芯片了,它们于 1970-1980 年推出。当时,视频处理芯片严重依赖 CPU 进行图形处理,1990 年代图形显卡更流行了,也更强大了,主要是因为 3D 显卡出现。

  乔治亚科技大学克里斯-麦克拉纳罕(Chris McClanahan)认为,GPU 硬件架构已经进化,以前它只是特定单一核心,现在向一组高并行、可编程核心转变,它可以用来处理更通用的计算。毫无疑问,随着 GPU 技术的发展,它会增加更多可编程性、更多并行性,变得越来越像 CPU,可以用于通用计算。麦克拉纳罕说,CPU 和 GPU 最终会融合。同时,开发者也开始挖掘 GPU 的能力,用于不同的应用中,包括物理系统建模、强化智能手机等。

  浩克解释道:“GPU 的内存带宽也比 CPU 高很多,在对海量数据进行简单计算时,它的效率更好。”

  已经有一些 GPU 编程语言存在,包括 CUDA 和 OpenCL。汉克开发了新语言 Harlan,它可以控制 GPU。实际上,Harlan 被编译成 OpenCL。但与其它语言不同,Harlan 语言的抽象思维更多与高级编程语言相近,比如 Python、Ruby。浩克称:“Harlan 的另一个目标是想回答一个问题:如果从一开始就开发一门语言,它最初的目标就是支持 GPU 编程,那会怎样呢?目前的大多系统将 GPU 编程嵌入到现有语言中,开发者不得不处理旧语言的所有问题。Harlan 可以让开发者更好地为目标硬件、程序作决策。”

  Harlan 语法基于 Scheme,它是 Lisp 语言的现代变种,Scheme 是所有好语言的始祖。为了让编程语言更“正常”一些,浩克还用到了 Rust 语言,这种语言主要面向开发系统,它可以操作硬件底层。浩克的目的是让程序员编写的代码更有效,因为 Harlan 能生产更好的 GPU 代码。

来自: 搜狐IT