2.5. 検証環境

本書での検証はMac Miniで行うものとします。仕様については下記の表とおりです。

AVXの拡張命令をサポートしており、Intel HD Graphics 4000が検証に使うGPUプロセッサです。

Intel HD Graphics 4000には1GBのメモリがあると記載されていますが、ホストのメインメモリと共有しているため、ホストからデバイスのメモリーにコピーする必要はありません。ただし、AMDやNVIDIAが提供するボードの専用メモリと比べると性能は大幅に下がります。

2.5.1. Mac Mini Late 2012の仕様

表2.2 表:Mac Mini Late 2012のハード仕様

詳細

プロセッサ

2.5 GHz Intel® Core i5 (i5-3210M)

グラフィックス

Intel HD Graphics 4000 1024 MB

メモリ

4 GB 1600 MHz DDR3

OS

OS X 10.9.5

スマートキャッシュ

3 MB

DMI

5GT/S

命令セット

64-bit

拡張命令

AVX

コア

2

スレッド

4

Turbo

3.1 GHz

最大メモリーチャンネル数

2

最大メモリー帯域

25.6 GB/s


表2.3 表:Intel® HD Graphics 4000

詳細

ベース周波数

650 MHz

最大Dynamic周波数

1.1 GHz


Mac Miniの仕様では、ホストのメインメモリーが4GBとされていますが、下表はOpenCL実装ライブラリに検知させた詳細なハードウェアのスペックとなります。

各プロセッサに附属するローカルメモリーは、CPUでは32KB、GPUには64KBの領域が使用可能です。(ローカルメモリーは以降の項目で説明します。)

2.5.2. CPU/GPUデバイス

読者のお持ちの環境が最近の端末でIntelかAMDのCPUを搭載していれば、CPUはGPU内蔵型の可能性が濃厚です。

本書の検証環境は「表:プラットフォーム内のOpenCLデバイス情報」(表2.4「表:プラットフォーム内のOpenCLデバイス情報」)で確認できます。検証環境として使用しているMac MiniにはCPUとGPUが同じボードに併存します。これはGPUがCPUチップセットの内蔵型グラフィックボードだからです。

CPUとGPUデバイスが混在するアーキテクチャは、ヘテロジニアス・マルチコアを理解する上で大きな利点と考えます。

本書ではNVIDIAやAMDの専用GPUボードは扱わないものの、OpenCLで考慮すべき点はIntelのGPUと変わりません。

2.5.3. OpenCLデバイス情報

OpenCLはサポートしているデバイスの情報を取得できる機能があります。この機能を使い情報を取得した結果を、下記の表にまとめました。

表2.4 表:プラットフォーム内のOpenCLデバイス情報

Device 0

デバイス種類

CPU

グローバルメモリサイズ

4294967296

ローカルメモリサイズ

32768

最大CU数

4

最大ワークグループサイズ

1024

最大次元数

3

Device 1

デバイス種類

GPU

グローバルメモリサイズ

1073741824

ローカルメモリサイズ

65536

最大CU数

16

最大ワークグループサイズ

512

最大次元数

3


グローバルメモリサイズ

グローバルメモリサイズは、グローバルメモリ領域にあるメモリの最大値です。この場合は普段アプリケーションが使うメインメモリを指します。Core i5 CPUでは4GB、HD Graphic 4000では、1GBのメモリ領域が割り当てられます。

ローカルメモリサイズ

ローカルメモリサイズはチップセット内に配置されたメモリを指します。32KB〜64KBのメモリ領域が割り当てられるのが一般的です。Core i5が32KB、HD Graphic 4000が64KBとなっています。

最大CU数

後述しますが、Compute UnitというCPU/GPU内に「物理的」に存在する処理単位の最大数を示します。

CPUの場合はこの値はCPUのコア数を示します。つまりCU数は並列処理可能な最大個数を原則(SIMD/SPMDは除く)として表します。Core i5では4個となります。

HD Graphic 4000では16個が最大値となります。つまり16個の並列処理ユニットが物理的に存在することになります。Compute Unitについてはデバイスの仕様を解説する際に再度説明します。

最大ワークグループ数

前項と同じく後述しますが、ワークグループは複数の処理を集合した「論理的」な処理グループです。アプリケーションを設計する際に開発者が指定する必要があります。論理的に定義したワークグループは、OpenCLによってCompute Unitにマップされます。

最大次元数

OpenCLにおける「次元」は、画像処理の「次元」と同様な意味を持ちます。例えば「1024 x 768」個の画素を持つ2次元画像がある場合は、次元2(x軸、y軸)を使用していることになります。

3次元画像では次元3(x軸、y軸、z軸)の座標で定義される情報を処理するために使います。OpenCLでは次元数3までのデータを処理できます。

2.5.4. Intel第3・4世代CPU内蔵グラフィックボード

検証のために使うGPUでバイスはHD Graphic 4000であり第3世代のIntelグラフィックボードです。これと第4世代の内蔵ボードを比較したのが下図です。

表2.5 表:Intel第3世代・第4世代CPU内蔵グラフィックボード

Intel HD Graphic 4000

Intel HD Graphics

4200/4400/4600

5000/5100/5200

API

Execution Units

16 EU

10 EU

20 EU

40EU

浮動小数演算命令数/clock

256

160

320

640

スレッド/EU(総数)

8/EU(128)

7/EU(70)

7/EU(140)

7/EU(280)

Texture Sampler

2

1

2

4


2.5.5. Intel Gen8/Gen9アーキテクチャ

筆者はIntel HD Graphicsの広報をする動機も目的もありませんが、Intelの内蔵ボードでの処理が本書の主題の一つである以上、最新のアーキテクチャを読者に紹介することは必要と考えます。

Intel Gen8/Gen9アーキテクチャは最新の内蔵グラフィックボードの一つです。このうち最上位機種では、336ハードウェアスレッドをサポートします。

またSLM(共有ローカルメモリ)がサブスライスにつき64KBのため、Intel Iris Pro Graphics 6200では、384KBを上限としたメモリ領域を使うことが可能です。

表2.6 表:Gen8アーキテクチャー

Intel HD Graphics 5300

Intel Iris Pro graphics 6200

EU

24 EUs

48 EUs (8 EU x 3 subslices x 2 slices)

ハードウェアスレッド(HW)

168 HW Threads

336 HW Threads

並列カーネルインスタンス

5,376

10,752

L3 cache

384-576KB

768-1024 KB

最大SLM

192 KB

384 KB

LLC

4-8 MB

4-8 MB

eDRAM

n/a

128 MB


Intel Gen9アーキテクチャでもGen8と同様に、サブスライスに対して64KBの共有ローカルメモリ領域が確保されています。

表2.7 表:Gen9アーキテクチャー

Intel HD Graphics 530

EU

24 EU(8 EU x 3 subslices x 1 slice)

ハードウェアスレッド(HW)

168 HWスレッド

並列カーネルインスタンス

5376

L3 cache

512 KB

最大SLM

192 KB

LLC

2-8 MB


Gen9はSoC(System on Chip)という半導体チップに必要なコンポーネント、サブコンポーネントを配置する集積回路ですが、コマンドストリーマー、ディスパッチャー、サブスライス/EUという処理の流れでアプリケーションから入力されたデータを制御します。

表2.8 Gen9 SoCのデータフロー

1

コマンドストリーマー

2

グローバルスレッドディスパッチャー

3

サブスライス/EU


このデータフローはGen9に固有のものではなく他のボードもこれに準拠します。

各サブスライスにはL3データキャッシュが配置される複合体とのバスが存在し、その上に共有ローカルメモリ(SLM)もあります。バスの帯域は64バイトです。

Copyright 2018-2019, by Masaki Komatsu