Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
! OpenCL [Open Computing Language]とは? ヘテロジニアス並列コンピューティング環境のためのフレームワーク プログラミング⾔言語仕様 [OpenCL C⾔言語 ]
CPU, GPU, Cell/B.E.,DSP 等あらゆるプロセッサで動作する⾔言語 実⾏行行環境の定義 [OpenCL Runtime]
OpenCL C⾔言語で記述されたプログラムを各プロセッサで動作させるAPI
1
Khronos OpenCL Working Group
AMD Apple ARM
Broadcom Blizzard
Codeplay Electronic Arts
Ericsson Freescale
IBM Imagination Technologies
Intel Kestrel Institute Khronos Movidia Nokia NVIDIA
Qualcomm RapidMind Renesas Seaweed Systems
Sony
Symbian Texas Instruments
Fixstars
PPE+SPE (Cell/B.E.)
CPU+GPU CPU+DSP
! 背景(ハードウェア) ハイブリッドシステムの流⾏行行
CPU+DSP PPE+SPE(Cell/B.E.) CPU+GPU
ヘテロジニアスな並列実⾏行行環境 マルチコア化 SIMD演算器 [SSE, AltiVec] ⽤用途に合わせたメモリ構成
2
CPU
DSP DSP
DSP
制御
信号処理
CPU
GPU
PPE
SPE
SPE
SPE
SPE
制御 制御
HPC デスクトップ
組み込み
! 背景(ソフトウェア)
3
MCH T10 Device Memory (4GB)
x86
Main Memory
PCIE
C/C++ +α
CUDA拡張C⾔言語
CUDA runtime/driver API
GPU[Tesla]
様々な⼿手法 並列⾔言語・命令 並列ライブラリ ドライバAPI 並列化コンパイラ
マルチコアの活用
ベクタ演算命令の活用
階層化されたメモリの活用
! 背景(まとめ)
既に浸透しているハイブリッドシステムの特徴 ヘテロジニアス構成
制御⽤用プロセッサ+複数の演算⽤用プロセッサ/複数の演算コア ⽤用途に適した組み合わせ
ベクタ演算命令(SIMD) 単⼀一ではないメモリ階層
それぞれに対して統⼀一されていない並列アプリケーション開発環境
制御⽤用ホスト 演算⽤用デバイス(複数) CPU(x86, PowerPC)
main memory
CPU/DSP/GPU/SPE
device memory
制御
何とかならないか?
4
! OpenCLの登場 The OpenCL Specification 最新版
Version: 1.0 Revision 48 [2009/10/6] http://www.khronos.org/registry/cl/
OpenCL Architecture ヘテロジニアス並列演算環境の定義 制御⽤用ホスト+演算⽤用デバイス
OpenCL C Programming Language 演算⽤用デバイスで動作するOpenCL C⾔言語の定義 数値演算
OpenCL Runtime 制御⽤用ホストから演算⽤用デバイスを操作するAPIの定義
各種プロセッサに対応するOpenCLの実装 →今年中にリリースされることが期待されている
5
! アプリケーション開発⽅方式の統⼀一
MCH T10 Device Memory (4GB)
X86
Main Memory
Device Memory (4GB)
PCIE
OpenCL C⾔言語 マルチコア活⽤用 ベクタ操作 メモリ操作
演算⽤用デバイス側 C/C++
OpenCL Runtime API
演算デバイス制御 ・データ並列処理 ・タスク並列処理
ホスト‐デバイス間メモリ転送
制御⽤用ホスト側
プラットフォーム対応 OpenCLランタイムライブラリ
CUDA対応 OpenCLコンパイラ
Tesla
6
CUDA対応 OpenCLコンパイラ T10
Tesla
標準化された並列処理 フレームワークを提供
! OpenCLのメリット
演算デバイス側 [GPU, DSP, Cell/B.E., CPU] 統⼀一された⾔言語(OpenCL C⾔言語)による記述が可能 ←OpenCLコンパイラ
制御ホスト側 [CPU] 統⼀一されたAPIによる演算デバイス制御が可能 ←OpenCLランタイムライブラリ
OpenCL C src
演算デバイス対応 OpenCLコンパイラ
GPU, DSP, Cell/B.E., CPU
演算プラットフォーム対応 OpenCLランタイムライブラリ
OpenCL Runtime API
制御⽤用 src
制御
C/C++
ベンダ別API、拡張⾔言語を利⽤用する必要がなくなる!!
7
OpenCLアーキテクチャ
Copyright © Fixstars Corporation. All rights reserved.
! プラットフォーム
ホストとデバイス OpenCLデバイス [OpenCL devices] = 演算⽤用プロセッサ ホスト [host] = 制御⽤用プロセッサ
PPE+SPE (Cell/B.E.)
CPU+GPU CPU+DSP
CPU
DSP DSP
DSP
制御
信号処理
CPU
GPU
PPE
SPE
SPE
SPE
SPE
制御 制御
ホスト デバイス ホスト デバイス ホスト デバイス
9
Tesla
! デバイス
OpenCLデバイス 演算ユニット[compute units] プロセッシングエレメント[processing elements]
OpenCLデバイス
演算ユニット
演算ユニット
演算ユニット
OpenCLデバイス = GPU
演算ユニット=マルチプロセッサ
演算ユニット=マルチプロセッサ
演算ユニット=マルチプロセッサ
ex) NVIDIA CUDA (GPU)
プロセッシングエレメント プロセッシングエレメント = CUDA コア ホスト = CPU
10
! 実⾏行行モデル ホストプログラムとカーネル
インデックス空間 ワークグループ [work-group]
ワークアイテム [work-item] 並列処理の単位 (関数レベル) →OpenCL C⾔言語
OpenCLデバイス
演算ユニット
演算ユニット
演算ユニット
ホスト ホストプログラム
OpenCLデバイス カーネル
プロセッシングエレメント
ワークグループ →演算ユニットで実⾏行行
ワークアイテム →プロセッシングエレメントで実⾏行行
global ID インデックス空間内 全work-item通し番号
11
! OpenCL C⾔言語 C99 ベースの⾔言語
拡張 ベクタ型・ベクタ演算 組み込み関数 修飾⼦子 型変換 Reinterpreting
厳密な定義 型のビット幅 演算⼦子の意味
制限 関数ポインタが使えない 可変⻑⾧長配列が使えない 再帰できない
12
標準 C99 ⾔言語
拡張型
組み込み関数
拡張修飾⼦子
OpenCL C⾔言語
! カーネル
OpenCLカーネル[OpenCL kernel] OpenCL C⾔言語で記述されたプログラム OpenCLコンパイラでコンパイル
オンラインコンパイル オフラインコンパイル
ネイティブカーネル[Native kernel] OpenCL C⾔言語以外で記述されたプログラム デバイスネイティブコンパイラでコンパイル
13
どちらのカーネルもOpenCLランタイムAPIで制御可能
! メモリモデル
デバイスメモリ階層の定義 グローバルメモリ[Global Memory] コンスタントメモリ[Constant Memory] ローカルメモリ[Local Memory] プライベートメモリ[Private Memory]
14
OpenCLデバイス = GPU
演算ユニット
P P ローカルメモリ
演算ユニット
P P ローカルメモリ
グローバルメモリ
コンスタントメモリ
プロセッシングエレメント
! 並列プログラミングモデル
データ並列プログラミングモデル
タスク並列プログラミングモデル
15
OpenCLデバイス
演算ユニット
演算ユニット
演算ユニット
#0
#1
#2
インデ
クス空間
データ並列指⽰示 コマンドキュー
デー
タ並列実⾏行行
OpenCLデバイス
演算ユニット
演算ユニット
演算ユニット
タスク実⾏行行指⽰示 コマンドキュー
タスク並列実⾏行行
! フレームワーク
OpenCLプログラミングのための道具 OpenCLプラットフォームレイヤー
OpenCLの実装が認識するプラットフォーム情報を取得するAPI OpenCLの実装が認識するデバイス情報を取得するAPI OpenCL実⾏行行のためのコンテキスト制御API
OpenCLランタイム OpenCLホストプログラムがデバイスとやりとりするためのAPI
OpenCLコンパイラ OpenCLデバイスで動作するプログラム(カーネル)を作成する
16
ホスト
API
OpenCLデバイス
OpenCL C言語
! まとめ
OpenCL概要 登場の背景 メリット
OpenCLアーキテクチャ プラットフォーム 実⾏行行モデル メモリモデル プログラミングモデル フレームワーク
17
OpenCLデバイス
演算ユニット
演算ユニット
演算ユニット
ホスト 制御
プラットフォーム
API OpenCL C言語
! OpenCLの実装状況
NVIDIA 正式リリース
CUDA2.3対応GPUで利⽤用可能
Apple Snow Leopard標準装備
AMD ATI Stream SDK 2.0 β版
IBM OpenCL Development Kit α版 (QS-22/JS-23) Cell/B.E., POWER系
Fixstars FOXC(Fixstars OpenCL Cross Compiler) β版
18
設⽴立立 :2002年8⽉月8⽇日 資本⾦金金 :2億1,055万円 社員数 :79名(2009/10⽉月 現在) 所在地 :東京、カリフォルニア 主要取引先 :株式会社東芝
ソニー株式会社 ⽇日本アイ・ビー・エム株式会社 NVIDIA Corporation みずほ証券株式会社 三菱総合研究所 宇宙航空研究開発機構(JAXA) 産業技術総合研究所 Broadcast International Inc.
! フィックスターズについて フィックスターズは、マルチコアプロセッサにおけるソフトウェア開発のリーディングカンパニーです。
19
既存のプログラムを活⽤用したマルチコア向けアプリケーション開発を提供しています。独⾃自のノウハウにより、短期間でマルチコア環境へ移植、プログラムの最適化を⾏行行い、⾼高速なアプリケーションを実現します。
! マルチコア向け最適化サービス
20
お客様 弊社
オリジナルコードを解析し計算ボトルネックを特定、移植⽅方針や利⽤用するハードウェアを決定
GPU またはCell/B.E.への移植、コアへの分散、SIMD化
移植後のコードの実製品への組み込み作業⽀支援や技術トランスファー
オリジナルコードのご提供
最適化サービス
プロファイリング 移植・最適化 サポート
! 技術者向けの様々な活動 いち早くマルチコアプログラミングに取り組んでいる当社では、マルチコアに関する様々な技術情報を公開しています。 NVIDIA CUDA Information Site
NVIDIAのCUDAインストールガイド、プログラミングチュートリアルなどの情報を公開 http://gpu.fixstars.com
各種プログラミングセミナー ■OpenCL ■CUDA ■Cell/B.E.
書籍 「マルチコアCPUのための並列プログラミング」 「ASCII.technologies 2009/12 特集:GPGPUによる並列処理」
21
! OpenCL⼊入⾨門本 2010年1⽉月22⽇日 発売予定
22
! OpenCLへの取り組み 効率的でポータビリティの⾼高いソフトウェアを実現する
OpenCLベースの製品やサービスを提供しています。 FOXC
OpenCLソースファイルを⼊入⼒力力とするSource to Sourceコンパイラ
23
OpenCL Source Code
FOXC
HW依存Code
バックエンドコンパイラ
Executable FOXC Runtime Library
β版無償提供中 http://www.fixstars.com/foxc
Fixstarsʼ’ OpenCL Solution
24
OpenCL Compiler For Intel Multi-
core Release date: 2010/4
Release date: 2010/3
OpenCL Compiler For Cell/B.E.
OpenCL Compiler For custom chip
Original Code
OpenCL Code
! Hybrid FOXC
25
様々なHost – Device 間接続に対応したOpenCL実⾏行行環境に対応 x86ホスト-x86デバイス側コンパイラ: FOXC デバイス側コンパイラ: Chip vendor’s OpenCL
Runtime Bridge Service:2つの異なるOpenCL実⾏行行形式の接続を⾏行行う x86 – x86+OpenCL(GPU) bridge
想定するハードウエア: x86-Teslaクラスターシステム, x86クラスタ
x86 GPU,Other Chips
Compiler for x86 Device
x86 Host Runtime Library
Compiler for GPU Device
GPU Host Runtime Library
x86-GPUホスト OpenCL Runtime Bridge
Service
Fixstars Chip vendor’s OpenCL
Infiniband, PCIe, Gbit Eth, etc
! OpenCL Eco-system OpenCL環境を整備し、利⽤用しやすい開発環境の提供を ⽬目指します 統合開発環境
Eclipse べースのOpenCLプラグイン 中間⽣生成コードのデバッグ機能
Yellow Dog Enterprise Linux for Multi Core ハイブリッドシステムのホストとなるX86サーバーをサポート 各種OpenCLコンパイラ、ライブラリ、のプリインストール CUDA等をプリインストール・サポート(商⽤用Linux OS初) OpenCL開発環境と、Linux環境の統⼀一的な技術サポート
26
Tesla
OpenCLプログラミングセミナー
1⽇日間の実践コース (10:00 ‒ 17:00) ⼀一般 40,000円 早割り 32,000円(2010/1/6までに申し込み)
Agenda OpenCL概要
OpenCLアーキテクチャ・⽤用語について解説 OpenCL⽂文法
OpenCL C⾔言語の⽂文法について解説 FOXC (Fixstars OpenCL Cross Compiler) 概要と使⽤用⽅方法
FOXCの構成・使い⽅方について解説 OpenCL プログラミング演習
基本的なOpenCLアプリケーション作成⽅方法の解説 OpenCLカーネルプログラムの作成 ホストプログラムの作成
OpenCLアプリケーションの性能を引き出すテクニックについて解説 ベクタ処理 データ並列処理 タスク並列処理
27
次回 1月20日(水)