27
OpenCL [ Open C omputing L anguage] とは? ヘテロジニアス並列コンピューティング環境のための フレームワーク プログラミング語仕様 [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

I [OpenCL CI - khronos.org · OpenCL [Open Computing Language]とは? ヘテロジニアス並列コンピューティング環境のための フレームワーク

  • 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日(水)

    [email protected]