1
Intel ® Software Developer Day
インテル
® OpenCL SDK のご紹介
と開発環境
2011年7月15日 インテル株式会社 ソフトウェア&サービス統拢部 アプリケーション・エンジニア 久保寺 陽子アジェンダ
OpenCLとは •ヘテロジニアス・コンピューティング •インテルのOpenCLへの取り組み•
インテル® OpenCL SDK の概要 • インテル® OpenCL SDKを使用したプログラム開発方法 • インストール方法 • コンパイラー・オプション • オフライン・コンパイラー•
インテル® グラフィックス・パフォーマンス・アナライザー (GPA) の概要•
インテル® OpenCL SDK +インテル® GPA 4.0に3
OpenCLとは
• OpenCL は新たな標準 • クロス・プラットフォーム • ヘテロジニアス • ローレベルのアクセス可能 • 様々なアプリケーションをサポート • メディア、イメージ処理、グラフィックス等 CPUs Multiple cores driving performance increases GPUs Increasingly general purpose data-parallel computing Emerging Intersection Heterogeneous ComputingDiagram based on deck presented in OpenCL BOF at SIGGRAPH 2010 by Neil Trevett, NVIDIA, OpenCL Chair, http://www.khronos.org/developers/library/2010_siggraph_bof_opencl/OpenCL-BOF-Intro-and-Overview_SIGGRAPH-Jul10.pdf
OpenCLプラットフォーム・モデル
• 1つのホスト + 1つ以上の計算デバイス- 各計算デバイスは1つ以上の計算ユニットから構成される
5
OpenCL 実行モデル
• OpenCLアプリケーションは計算デバイスに ワークをサブミットしたホスト上で動作する - ワークアイテム: OpenCLデバイスのワークの基本単位 - カーネル: ワークアイテムのコード。基本的にはC関数 - プログラム: カーネルとその他の関数(動的なライブラ リーと相似)の集合 - コンテキスト: ワーク・アイテムを実行する環境 … デバイスやメモリー、コマンドキューを含む • アプリケーションは実行インスタンスをキューイ ング - インオーダーでキューに入る … 1つのキューは1つのデ バイスに対応 - 実行はインオーダーまたはアウトオブオーダーDiagram based on deck presented in OpenCL BOF at SIGGRAPH 2010 by Neil Trevett, NVIDIA, OpenCL Chair, http://www.khronos.org/developers/library/2010_siggraph_bof_opencl/OpenCL-BOF-Intro-and-Overview_SIGGRAPH-Jul10.pdf
並列化における開発者の選択肢
インテルでは高性能な並列コンピューティング・ツールと技術を開発者が選択できる
• インテル® Parallel Building Blocks (インテル®PBB) は広範囲なアプリケーションの並列化に対応.
• OpenCL*は具体的なセグメントの顧客のニーズに対処し、それらのアプリケーション性能を最大化するた
TM
Microsoft, Intel, GNU C++ で互換 様々なOS、プラットフォームをサポート
7 メインストリーム、一般の開発者 デジタル・ンテンツ 作成 メディア
OpenCL*はどこで使うか?
開発者の選択: インテルは開発者に広い範囲の並列処理ツールを提供。OpenCL は一定の分野やシナリオで有 効。 OpenCLの 利点/欠点: 利点:1つのAPI でCore TM、 プロセッサー・グラフィックス, ヘテロジニアス・デバイス/プラット フォームをサポート欠点: 高度な知識を必要とするローレベルAPIや制限された limited composability
CoreTM+ Processor Gfx CoreTM+ Processor Gfx
ゲーム CoreTM+ Processor Gfx OpenCL はアプリケーションに依存する一定のセグメントに有用 ターゲット HW Core 、 プロセッサ ・グラフィックス, クロスベンダーをサポートする単一API ローレベルの制御・APIを提供し、OpenGLやDirectXと相互運用可能 OpenCLをい つ使う? ハイパフォーマン ス・コンピューティン グ Xeon/MIC Consumer Client HPC/Enterprise
Intel®TBB1, IPP2, OpenCL,
MDSK3, DirectX Intel
®PBB4, OpenCL,
OpenGL, DirectX TBB, DirectX, OpenGL, OpenCL
ツール&API Intel®PBB, OpenCL
1Intel®Threading Building Blocks (TBB) 2Intel®Integrated Performance Primitives 3Intel® Media SDK
4 Intel®Parallel Building Blocks (PBB)
GPUアプリを将来のインテル ・プラットフォームにポーティン
OpenCL とヘテロジニアス・コンピューティング
• OpenCLはデバイスに依存しない1つのプログラミ ング環境を提供するプラットフォームAPIである • ヘテロジニアスな並列計算を実現 • CPUやGPU等をコーディネートすること • OpenCLを使うことにより、単一プログラム内で全 ての計算資源(CPUやGPU等)を最大限に活用す ることが可能: • 単一プログラムがヘテロジニアス・プロセッサー環境内で、人 間が最適化したように高性能で動作する • インテルの新世代プロセッサーの採用: CPUとGPUの新たな レベルでの統合9
OpenCLのデータ並列実行モデルのマッピング
• 暗黙のSIMDデータ並列(例.シェーダースタイル): • “スカラープログラム”としてカーネル・プログラムを記述 • アルゴリズムに沿うようにベクターデータを使用 • カーネル・プログラムはコンパイラー/ランタイム/ハードウェア によって自動的にSIMD計算資源に割り当てられる • 明示的 SIMD データ並列: • カーネル・プログラムは命令の1つのストリームを定義 • 並列化はソースプログラムの段階からワイド・ベクタータイプを 使用 • ベクターサイズは実装されているHWで決まる • プログラマーはattributeを使用してベクトルデータのヒントを記 述できる • vec_type_hint(typen)CPU は両方のマッピングをサポート
データ並列
: IA プロセッサーのオプション
• 明示的SIMD データ並列 • プログラマーはベクター・データのタイプ(width)を選択 • コンパイラーに対してattribute で指示 • Vec_type_hint(typen) • 暗黙の SIMD データ並列 • CPUs, GPUs, …へのマッピング • SSE/AVX : 並列に4/8 のワークアイテムを処理 • 2つの方法のハイブリッド • AVX : 4ワイドのワークアイテム2個を並列に処理可能11
インテルの
OpenCLへの取り組み
• インテルは Khronosのファウンダー&プロモーター ‒ インテルはOpenCLを自社のプラットフォームでサポートし、OpenCLの機能 セットにも関与 • インテル は開発者に選択肢の1つとしてツールを提供 ‒ インテル® OpenCL SDK は革新的な並列プログラミングツールにインテルが 検証した最新の追加を行う. • 現在、インテル® OpenCL SDKのCPU版は公開中 ‒ http://software.intel.com/en-us/articles/intel-opencl-sdk/アジェンダ
OpenCLとは ヘテロジニアス・コンピューティング インテルのOpenCLへの取り組み
インテル® OpenCL SDK の概要 • インテル® OpenCL SDKを使用したプログラム開発方法 • インストール方法 • コンパイラー・オプション • オフライン・コンパイラー•
インテル® グラフィックス・パフォーマンス・アナライザー (GPA) の概要•
インテル® OpenCL SDK +インテル® GPA 4.0に13
現在公開中
–
インテル® OpenCL SDK インテル® OpenCL SDK version • http://software.intel.com/en-us/articles/intel-opencl-sdk/. 機能: • インテル® CoreTM プロセッサーのサポート • OpenCL 1.1 に準拠 • 32ビットと64ビット・アプリケーションをサポート • サポートOS:Windows と Linux (64bitのみ)インテル
® OpenCL SDK の利点
性能 • インテルのハードウェアを効率的に使用: • インテル・プロセッサー・グラフィックスのプログラム機能の使用 • SIMD命令やマルチコア・スケーラビリティ等のインテル® IA の利点 をシームレスに利用 • カーネルプログラムをインテルCPUとプロセッサー・グラフィックスに 分ける 使いやすさ • 1つのAPI でインテル® プロセッサー・グラフィックスとインテル® CPUをサポー ト • 将来のインテル® アーキテクチャーとプラットフォームに互換 • ツールと技術の統合: • 現在: TBB, OpenGL. • 将来: Media SDK, DX 標準化 • 標準APIを採用して、開発期間を短縮15
プロファイリング・ツール デバッグツール 静的ツール
• OpenCL プロファイル APIのサポート
• POpenCL API を通してOpenCLカウンタを提 供 • スタンドアローンのカウンタービューワー • OpenCL プラットフォーム・アナライザー • OpenCL タスク・インストルメント • OpenCL キュー・インストルメント • iGPA タスク・アナライザー
• VTune Amplifier XE への統合(CPU のみ)
• JIT プロファイリング • OpenCL カーネル・デバッガー (CPU の み) • MSFT 2008/2010 Visual Studio む けのデバッグエンジン • .cl ファイルからのカーネル・バッグ • OpenCL オフラインコンパイラー • オフラインコンパイル時に提供されるサー ビル: シンタックス・チェッカー, アセンブ ラー表示, LLVM 表示 等. • 2 つのモードで使用可能: GUI モードとコマ ンドライン・モード
インテル
®OpenCL SDK ツールとサンプル
サンプルプログラム • OpenCLサンプルで提供されるもの: • サンプル毎のドキュメント • OpenCL チュートリアルと最適化ガイド • インテル・プラットフォーム最適化コードと命令アジェンダ
OpenCLとは ヘテロジニアス・コンピューティング インテルのOpenCLへの取り組み
インテル® OpenCL SDK の概要 インテル® OpenCL SDKを使用したプログラム開発方法 • インストール方法 • コンパイラー・オプション • オフライン・コンパイラー•
インテル® グラフィックス・パフォーマンス・アナライザー (GPA) の概要•
インテル® OpenCL SDK+インテル® GPA 4.0に17
インテル
® OpenCL SDKのインストール環境
•Intel® OpenCL SDKのバージョン •Windows 版: 32bit、64bit •Linux版: 64bit •サポートするHW: •SSE4以降のSIMD命令をサポートしているプロセッサー •具体的には、Intel® Core™ マイクロアーキテクチャー •サポートOS:•Microsoft Windows 7 (32-bit version、64-bit version)
•Microsoft Windows Vista (32-bit version、64-bit version) •Novell SUSE Linux* Enterprise Server 11 SP1 (64-bit
version)
19
Visual Studio における使用方法
ヘッダーファイルのインクルード
オフライン・コンパイラー
21
23
アジェンダ
OpenCLとは ヘテロジニアス・コンピューティング インテルのOpenCLへの取り組み
インテル® OpenCL SDK の概要 インテル® OpenCL SDKを使用したプログラム開発方法 インストール方法 コンパイラー・オプション オフライン・コンパイラー
インテル® グラフィックス・パフォーマンス・アナライザー (GPA) の概要•
インテル® OpenCL SDK+インテル® GPA 4.0に25
インテル
® グラフィックス・パフォーマンス・
アナライザーの概要
•ツール ‒システム・アナライザー ‒フレーム・アナライザー ‒タスク・アナライザー •留意事項 ‒単一コンピューターやネットワーク上から の起動が可能 ‒全てのDirectX* に対応したデバイスで 動作 ‒ゲームレベルのコンテキスト ‒キャプチャー・ファイルの共有インテル
® グラフィックス・パフォーマンス・アナライザー4.0
の新機能
• 全体の機能 • Microsoft DirectX* 11 サポート • 新たな “how to” ヘルプ・ビデオの提供 • インテル® GPA システム・アナライザー/インテル® GPA フレーム・ アナライザー • インテル® HD グラフィックス 2000/3000 ハードウェア上での新たなGPU メトリックスをサポート• インテル® GPA プラットフォーム・アナライザー (beta release)
• インテル® GPA 3.0(βバージョン)でリリースされたプラットフォーム表示の機能をス タンドアローン・アプリケーションにした
27
アジェンダ
OpenCLとは ヘテロジニアス・コンピューティング インテルのOpenCLへの取り組み
インテル® OpenCL SDK の概要 インテル® OpenCL SDKを使用したプログラム開発方法 インストール方法 コンパイラー・オプション オフライン・コンパイラー
インテル® グラフィックス・パフォーマンス・アナライザー (GPA) の概要
インテル® OpenCL SDK+インテル® GPA 4.0による解析 • まとめIGPAを使用した際のOpenCLプログラムの解析
デモ
29
まとめ
• インテル は開発者に選択肢の1つとしてOpenCLに関する ツールを提供 します。 ‒ インテルはOpenCLを自社のプラットフォームでサポートし、 OpenCLの機能セットにも関与しています。 • 現在、OpenCLのCPU版は公開中です。 ‒ http://software.intel.com/en-us/articles/intel-opencl-sdk/ • インテルが提供するツールもOpenCL33 最適化に関する注意事項 インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイ クロプロセッサーで利用可能な命令セット( SIMD 命令セットなど) 向けの最適化オプションが含まれているか、あるいは オプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコ ンパイラー・オプション( インテル® マイクロアーキテクチャーに非固有のオプションを含む) は、インテル製マイクロプロ セッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッ サーの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。 インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロ セッサーでより高度に最適化されます。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロ セッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラー とライブラリーは、選択されたオプション、コード、およびその他の要因に基づいてインテル製マイクロプロセッサーおよび 互換マイクロプロセッサー向けに最適化されますが、インテル製マイクロプロセッサーにおいてより優れたパフォーマンス が得られる傾向にあります。 インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マ イクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2( インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3( インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。 インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本 製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテルで は、インテル® コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおい て、優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラー を選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブ ラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの 点がございましたら、お知らせください。 改訂 #20110307 33