OpenCL

「OpenCL」の編集履歴(バックアップ)一覧に戻る

OpenCL - (2009/10/25 (日) 15:18:30) のソース

*■OpenCLの実力
**1. OpenCLとは
 OpenCLとは、今まで描画に使用されていたGPUの演算能力を、3D描画などの目的以外でも汎用的に使用する技術のことである。

 FPS(First Person Shootin)などの3Dゲームはともかく、通常の使用においては、GPU(Graphics Processing Unit)は常に処理をしている訳でなく、アイドルの状態である。また、CPUとは異なり、複雑な条件分岐が発生しないストリームデータの処理においてはCPUよりも遥かに高速に処理することができる。そこで、CPUの用に汎用的にGPUを活用しようとGPGPU(General Purpose GPU)というアプローチが生まれ、特定のGPUに依存しないオープンな規格として纏めようとAppleが中心となって提唱したのが[[OpenCL>>http://images.apple.com/jp/macosx/technology/docs/OpenCL_TB_brief_20090608.pdf]]である。

 Snow LeopardはOpenCLを実装した初めてのOSであり、以下のGPUの組み合わせで使用することができる。
|>|BGCOLOR(mediumseagreen):NVIDIA|
|GeForce 8xxx| GeForce 8600M GT、GeForce 8800 GT、GeForce 8800 GS|
|GeForce 9xxx| GeForce 9400M、GeForce 9600M GT|
|GeForce GT1x| GeForce GT 120、GeForce GT 130|
|GeForce GT2X| GeForce GTX 285|
|Quadro FX | Quadro FX 4800、Quadro FX5600|
|>|BGCOLOR(lightsalmon):ATI| 
|Radeon 48xx| Radeon 4850、Radeon 4870|

**■追記 (2009/10/25)
 Late 2009 iMacでATI Radeon 4670がサポートされた。

 スペックをみるとCore 680MHz/Memory 790MHz(GDR3)であり、デスクトップ版のCore 750MHz/Memory 1000MHz(GDR3)よりもクロックが下げられている。4650がCore 600Mhz/ Memory 500MHz(DDR2)である為、実パフォーマンスは4650と4670の中間あたりと思われる。
 
 現状、Radeon 4670のサポートは2009 Late iMacのプレインストール版10.6.1(カーネル10.1.2)のみであるが、10.6.2では、Radeon 4670が標準でサポートされる。これにより、kextにデバイスIDを追記することにより、4350/4650も使用することが可能となり、現状の48x0のみから、46x0/45x0/43x0も使用できるようになる。

 Mac miniとしてこの情報から考察すべき点は、内蔵GPUのパフォーマンスが振るわないArandaleではなく、独立GPUを必要とするMobile版Core i5/i7のClarksfiled
と、消費電力の少ないRadeon 4550(*1)(デスクトップ版20W)やそれ以下のMobility  Radeon 4570/4530などと組み合わせた構成を取ることも想定できるということである。

***1 パフォマーンスの観点ではRadeon 4550はGeForce 9400GTよりも性能は上で、消費電力は少ない。

**2. テストプログラムの実行
 OpenCLを使用したアプリケーションはSnow Leopardリリース時点では無いが、Appleの開発者向けサイトでサンプルプログラムが公開されている。ただし、かなり不親切で公開されているのはソースのみであり、OpenCLの実力を体験するには自分でビルドする必要がある(説明ドキュメントも満足に整備されておらず、ソースを読まなければいけない状態とかなり雑)。

***■テストプログラム実行環境
|BGCOLOR(skyblue):MainMachine|BGCOLOR(skyblue):>|BGCOLOR(skyblue):Apple Mac mini (MB463J/A)|
|Memory| 8GB(4GBx2) |SanMax SMD-N4G68HP-10F DDR3-1066 S.O.DIMM 4GB CL7 hynix/JEDEC|
|Storage| SSD 256GB| SAMSUNG PB-22J (MMDOE56G5MXP-0VB)|
|ODD| Blu-ray Read Super Drive | Sony NEC Optiarc BC-5600S Slim Combo Drive| 
|OS | OSX [[Snow Leopard 10.6.1(64bitカーネル>>http://www39.atwiki.jp/macmini/pages/30.html]])| HFS+ (Journal Enabled)|

***■テストプログラムと実行結果
[[OpenCL NBody Simulation Example(ソース)>>https://developer.apple.com/mac/library/samplecode/OpenCL_NBody_Simulation_Example/]]/[[Galaxies(実行バイナリ)>>http://www.mediafire.com/file/mu1no52ntoy/Galaxies.zip]]
#aa(){
主な操作キー
1-6: Select an N-Body System Configuration
g: Select the next Graphics Device
s: Select the next Simulation Device
r: Enable/Disable Auto Rotation
d: Show/Hide Dock UI
h: Show/Hide HUD UI
u: Show/Hide Simulation Updates Meter
f: Show/Hide FPS Meter
space: Pause/Unpause Simulation
0: Quit
}
・CPU演算の結果
#image(http://www39.atwiki.jp/macmini/pub/galaxies1.jpg,width=600,height=338,title=CPUの結果,http://www39.atwiki.jp/macmini/pub/galaxies1.jpg,blank,left)
・GPU演算の結果
#image(http://www39.atwiki.jp/macmini/pub/galaxies2.jpg,width=600,height=338,title=GPU演算の結果,http://www39.atwiki.jp/macmini/pub/galaxies2.jpg,blank,left)
・CPU+GPU演算の結果
#image(http://www39.atwiki.jp/macmini/pub/galaxies3.jpg,width=600,height=338,title=CPU+GPU演算の結果,http://www39.atwiki.jp/macmini/pub/galaxies3.jpg,blank,left)

[[OpenCL Procedural Grass and Terrain Example(ソース)>>https://developer.apple.com/mac/library/samplecode/OpenCL_Procedural_Grass_and_Terrain_Example/]]/[[Glass(実行バイナリ)>>http://www.mediafire.com/file/zc5dmy2mjnu/Grass.zip]]
#aa(){
主な操作キー
. : NoisesBias up 
/ : NoisesBias down
- : FieldInstance(Glass) up
= : FieldInstance(Glass) down
; : FlowSpped(Wind) up
' : FlowSpped(Wind) down
q : quit
}
・FieldInstance Max
#image(http://www39.atwiki.jp/macmini/pub/glass.jpg,width=512,height=482,title=FieldInstance Max,http://www39.atwiki.jp/macmini/pub/glass.jpg,blank,left)

----
[[戻る>トップページ]]