由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Apple版 - OpenCL: 很美而且垂手可得【15/23】
相关主题
Mac OS X 背后的故事(九)半导体的丰收(下)zz有关于ipad及A4性能方面的具体消息了吗?
OpenCL:图形处理领域的革新【14/23】据传,果子和amd有一腿
装上SL后到底是比原来凉了还是热了?刚退了ipad
MBP 13" + 24 monitor和MBP 15"比性能差多少?iOS 4.3 Beta Hints at OpenCL-Capable SGX543 GPU in Future Devices
Mac Pro 明天就可以order了,真希望自己有钱买一个转这些技术文章的原因
关于OpenCL-苹果,Intel,AMD,NVIDIA和MSFTSL真的快了吗、
[合集] 关于OpenCL-苹果,Intel,AMD,NVIDIA和MSFTMacBook Pro 什么时候能出新的?
nV CEO说他家电脑全是苹果;nV + OpenCL?其实最不可思议的是老MBP Refurb没降价
相关话题的讨论汇总
话题: opencl话题: gpu话题: cpu话题: 代码话题: 硬件
进入Apple版参与讨论
1 (共1页)
a****a
发帖数: 5763
1
http://bbs.weiphone.com/read-htm-tid-556999.html
上篇讲到OpenCL的好处, 但是如果要让Mac用户的日常应用切实的体验到这些优势和影
响, 就需要程序员把OpenCL技术加入到他们的程序中去. 而历来, GPGPU的编程语音一
直没有在传统的桌面程序中得到广泛的应用. 这当中有几个原因.
最初, 针对GPU的编程需要用汇编语言, 而汇编语言跟传统用于桌面程序开发的语言的
差别很大. 在桌面程序的开发上, 广泛应用GUI, API等工具. 即使后来出现的类似C语
音的一些编程语言, 保留了一些针对图形的特性. 但大部分的开发者对于这部分东西仍
然感到很头痛, 像一门他们不太懂的外语一样避而远之.
其次, 即使使用GPU能在很大程度上提高速度, 但依赖于GPU来进行通用计算还是一个问
题, 就是会让程序本身的兼容性变得比较狭窄. 很多老款的GPU, 特别是笔记本上的,
无法运行像CUDA这样的语言.
而苹果在设计OpenCL的时候,有一个很关键的决定就是要让OpenCL不仅能运行在GPU上,
而且还要运行在CPU上. 一个OpenCL程序可以自己探测硬件, 把所有支持OpenCL的硬件
CPU, GPU都罗列出来, 如目前支持OpenCL的有两个GPU,两个CPU, 然后程序可以自己给
这些支持OpenCL的硬件发派任务.
让OpenCL的程序能同时运行在CPU或者GPU上的好处是显而易见的. 所有安装了雪豹系统
的Mac, 不仅仅是最近的新款, 都能运行含有OpenCL代码的程序.
事实上, 某些算法运行在多核的CPU上要比运行在GPU上要快很多, 即使是最快的GPU也
是如此. 2009年的WWDC上, Electronic Art的一个工程师展示了一个游戏中一部分
OpenCL程序, 该程序运行在一个四核的Mac Pro上的速度要比运行在NVIDIA GeForce
GTX285要快四倍. 但很多时候, 用户要求的只是系统能正常稳定的运行, 在这种情况下
, 我们的目标仍然是好好的利用好CPU的资源.
此外, 用以前的方法来给Intel的CPU写代码依然是个很头痛的事情, 因为像一系列的指
令集, 如MMX, SSE2, SSE3还有SSE4需要去处理, 他们都有略微的区别. 很多程序员写
出来的代码就像这样:
OpenCL天生支持这样的代码:
OpenCL支持未声明的并行运算, 这可以很简单的就发挥出多核CPU的优势. 好比以前,
你需要先把你的数据作拆分, 然后把它们分发给并行的硬件, 但现在OpenCL中的代码只
要你把这块数据一起给硬件, 请求并行, 剩下的就不用管了.
这种方式在传统的图形编程中被认为是理所当然的. 在图形编程中, 一些图形的纹理或
者多边形的形成, 其实是每个像素都在执行代码. 程序员要做的只是用一种内部循环的
方式编写代码. 一个支持类似并行运算, 并且能同时运行在CPU和GPU上的API, 就可以
使得这两者看起来似乎没什么区别.
利用OpenCL技术写的代码是与时俱进的. 就像OpenGL的代码会变得越来越快, 因为新的
, 更为强劲的GPU被不断开发出来. OpenCL也一样, 只要CPU和GPU变的越来越快, 用
OpenCL写的代码也变得越来越快. OpenCL中有一个抽象的特别层让这一切变得可能. 就
好比, 几年前使用MMX技术写的代码现在变得更快, 因为CPU的速度变快了.
随着越来越强大的指令集和支持并行运算的硬件的到来, 苹果也在不断的完善OpenCL,
以便充分的利用这些硬件的性能. 就像GPU制造商和操作系统的设计者在不断的更新
OpenGL的驱动, 以便充分利用越来越强大的GPU. 然而, 程序的开发者写代码的方式却
不需要什么改变.甚至很多程序都不需要重新编译.
到这里, 你可能会有疑问, 那如果一个编译过的代码可以运行在SSE2指令集的CPU上,
那它运行在SSE3的CPU呢? 如果在NVIDIA的显卡上可以, 那在ATI的显卡上又如何呢? 要
做到这一点, 就必须把独立于具体硬件的OpenCL代码转变成适合目标硬件的指令. 运行
在GPU上的时候, 则要实时把代码编译为GPU能读懂的指令;而运行在CPU上的时候, 则要
根据具体的代码为并行运算创建和分送线程.
你知道吗? 苹果已经有两项技术来解决这个现实中面临的问题.
这就是LLVM, 苹果在Leopard中使用了这项技术. 而现在的OpenCL其实从LLVM发展而来
的. LLVM为每个指令集写一个代码生成器并将其全部集中在一个代码优化器中, 这样做
有一个好处, 它是独立于硬件的. 这可以免去了许多的重复工作, 只要使用一个编译器
来生成一个静态的可执行文件然后需要的时候实时编译就可以了.
还有一个就是Core Image. 这是另外一个API, 它可以实时的编译代码然后让其在像
GPUs或者多核的CPU这类并行的硬件上. 在雪豹上, 苹果重写了Core Image, 使用了
OpenCL技术, 使得性能上有约25%的提升.
1 (共1页)
进入Apple版参与讨论
相关主题
其实最不可思议的是老MBP Refurb没降价Mac Pro 明天就可以order了,真希望自己有钱买一个
请问这种情况是什么原因?关于OpenCL-苹果,Intel,AMD,NVIDIA和MSFT
Snow Leopard in Hand[合集] 关于OpenCL-苹果,Intel,AMD,NVIDIA和MSFT
MBP温度多少算正常啊?nV CEO说他家电脑全是苹果;nV + OpenCL?
Mac OS X 背后的故事(九)半导体的丰收(下)zz有关于ipad及A4性能方面的具体消息了吗?
OpenCL:图形处理领域的革新【14/23】据传,果子和amd有一腿
装上SL后到底是比原来凉了还是热了?刚退了ipad
MBP 13" + 24 monitor和MBP 15"比性能差多少?iOS 4.3 Beta Hints at OpenCL-Capable SGX543 GPU in Future Devices
相关话题的讨论汇总
话题: opencl话题: gpu话题: cpu话题: 代码话题: 硬件