• 検索結果がありません。

! 行行 CPUDSP PPESPECell/B.E. CPUGPU 行行 SIMD [SSE, AltiVec] 用 HPC CPUDSP PPESPE (Cell/B.E.) SPE CPUGPU GPU CPU DSP DSP PPE SPE SPE CPU DSP SPE 2

N/A
N/A
Protected

Academic year: 2021

シェア "! 行行 CPUDSP PPESPECell/B.E. CPUGPU 行行 SIMD [SSE, AltiVec] 用 HPC CPUDSP PPESPE (Cell/B.E.) SPE CPUGPU GPU CPU DSP DSP PPE SPE SPE CPU DSP SPE 2"

Copied!
27
0
0

読み込み中.... (全文を見る)

全文

(1)

!  

OpenCL [Open Computing Language]

とは?  

 

ヘテロジニアス並列コンピューティング環境のための

フレームワーク  

 

プログラミング⾔言語仕様

  [OpenCL C⾔言語  ]

 CPU, GPU, Cell/B.E.,DSP 等あらゆるプロセッサで動作する⾔言語  

 

実⾏行行環境の定義  

[OpenCL Runtime]

 OpenCL C⾔言語で記述されたプログラムを各プロセッサで動作させるAPI  

Khronos OpenCL Working Group

AMD Apple ARM Broadcom Blizzard

Codeplay Electronic Arts

Ericsson Freescale IBM

Imagination Technologies Intel Kestrel Institute Khronos

Movidia NVIDIA Nokia Qualcomm RapidMind

Renesas Seaweed Systems Sony

Symbian

Texas Instruments

(2)

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

 

並列化コンパイラ  

マルチコアの活用

ベクタ演算命令の活用

階層化されたメモリの活用

(4)

!  

背景(まとめ)  

 

既に浸透しているハイブリッドシステムの特徴  

 

ヘテロジニアス構成  

 

制御⽤用プロセッサ+複数の演算⽤用プロセッサ/複数の演算コア  

 

⽤用途に適した組み合わせ  

 

ベクタ演算命令(SIMD)  

 

単⼀一ではないメモリ階層    

それぞれに対して統⼀一されていない並列アプリケーション開発環境   制御⽤用ホスト   演算⽤用デバイス(複数)   CPU(x86, PowerPC)   main memory   CPU/DSP/GPU/SPE   device memory   制御   何とかならないか?   4

(5)

!  

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の実装

→今年中にリリースされることが期待されている  

(6)

!  

アプリケーション開発⽅方式の統⼀一  

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  

標準化された並列処理

フレームワークを提供

(7)

!  

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、拡張⾔言語を利⽤用する必要がなくなる!!  

(8)

OpenCL

アーキテクチャ  

(9)

!  

プラットフォーム  

 

ホストとデバイス  

 OpenCL

デバイス  [

OpenCL devices

] =

演算⽤用プロセッサ  

 

ホスト  [

host

] =

制御⽤用プロセッサ  

PPE+SPE

(Cell/B.E.)   CPU+GPU   CPU+DSP   CPU   DSP   DSP   DSP   制御   信号処理   CPU     GPU PPE   SPE SPE SPE SPE 制御   制御   ホスト   デバイス   ホスト   デバイス   ホスト   デバイス  

(10)

Tesla  

!  

デバイス  

 

OpenCL

デバイス  

 

演算ユニット[

compute units

]

 

プロセッシングエレメント[

processing elements

]

OpenCLデバイス   演算ユニット 演算ユニット 演算ユニット OpenCLデバイス  = GPU 演算ユニット=マルチプロセッサ 演算ユニット=マルチプロセッサ 演算ユニット=マルチプロセッサ ex) NVIDIA CUDA (GPU)

プロセッシングエレメント  

プロセッシングエレメント  = CUDA コア   ホスト  = CPU  

(11)

!  

実⾏行行モデル  

 

ホストプログラムとカーネル

 

インデックス空間  

 

ワークグループ  

[

work-group

]

 

ワークアイテム  

[

work-item

]

並列処理の単位

(関数レベル)

→OpenCL  C⾔言語

OpenCLデバイス   演算ユニット 演算ユニット 演算ユニット ホスト ホストプログラム OpenCLデバイス カーネル プロセッシングエレメント   ワークグループ →演算ユニットで実⾏行行   ワークアイテム →プロセッシングエレメントで実⾏行行  

global ID

インデックス空間内

全work-item通し番号

(12)

!  

OpenCL C

⾔言語  

 

C99

ベースの⾔言語  

 

拡張  

 

ベクタ型・ベクタ演算  

 

組み込み関数  

 

修飾⼦子  

 

型変換    

 

Reinterpreting

 

厳密な定義  

 

型のビット幅  

 

演算⼦子の意味  

 

制限  

 

関数ポインタが使えない  

 

可変⻑⾧長配列が使えない  

 

再帰できない  

12 標準 C99 ⾔言語 拡張型 組み込み関数 拡張修飾⼦子 OpenCL C⾔言語

(13)

!  

カーネル  

 

OpenCL

カーネル[

OpenCL kernel

]

 OpenCL C

⾔言語で記述されたプログラム  

 OpenCL

コンパイラでコンパイル

 

オンラインコンパイル

 

オフラインコンパイル  

 

ネイティブカーネル[

Native kernel

]

 OpenCL

  C⾔言語以外で記述されたプログラム  

 

デバイスネイティブコンパイラでコンパイル  

どちらのカーネルもOpenCLランタイムAPIで制御可能  

(14)

!  

メモリモデル  

 

デバイスメモリ階層の定義  

 

グローバルメモリ[

Global Memory

]

 

コンスタントメモリ[

Constant Memory

]

 

ローカルメモリ[

Local Memory

]

 

プライベートメモリ[

Private Memory

]

14 OpenCLデバイス  = GPU 演算ユニット P   P   ローカルメモリ   演算ユニット P   P   ローカルメモリ   グローバルメモリ   コンスタントメモリ   プロセッシングエレメント  

(15)

!  

並列プログラミングモデル  

 

データ並列プログラミングモデル

 

タスク並列プログラミングモデル  

OpenCLデバイス   演算ユニット 演算ユニット 演算ユニット #0 #1 #2 イ ン デ ク ス 空 間   データ並列指⽰示   コマンドキュー   デ タ 並 列 実 ⾏行行   OpenCLデバイス   演算ユニット 演算ユニット 演算ユニット タスク実⾏行行指⽰示   コマンドキュー   タ ス ク 並 列 実 ⾏行行  

(16)

!  

フレームワーク  

 

OpenCL

プログラミングのための道具  

 OpenCL

プラットフォームレイヤー  

 

OpenCL

の実装が認識するプラットフォーム情報を取得する

API

 

OpenCL

の実装が認識するデバイス情報を取得する

API

 

OpenCL

実⾏行行のためのコンテキスト制御

API

 OpenCL

ランタイム  

 

OpenCL

ホストプログラムがデバイスとやりとりするための

API

 OpenCL

コンパイラ  

 

OpenCL

デバイスで動作するプログラム(カーネル)を作成する  

16 ホスト   API OpenCLデバイス   OpenCL C言語

(17)

!  

まとめ  

 

OpenCL

概要

 

登場の背景

 

メリット

 

OpenCL

アーキテクチャ

 

プラットフォーム

 

実⾏行行モデル

 

メモリモデル

 

プログラミングモデル

 

フレームワーク  

OpenCLデバイス   演算ユニット 演算ユニット 演算ユニット ホスト   制御   プラットフォーム   API OpenCL C言語

(18)

!  

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) β

(19)

設⽴立立    :2002年8⽉月8⽇日   資本⾦金金    :2億1,055万円   社員数    :79名(2009/10⽉月  現在)   所在地    :東京、カリフォルニア   主要取引先  :株式会社東芝        ソニー株式会社        ⽇日本アイ・ビー・エム株式会社        NVIDIA Corporation みずほ証券株式会社        三菱総合研究所        宇宙航空研究開発機構(JAXA) 産業技術総合研究所  

!  

フィックスターズについて

 

フィックスターズは、

マルチコアプロセッサ

におけるソフ

トウェア開発のリーディングカンパニーです。  

(20)

 

既存のプログラムを活⽤用したマルチコア向けアプリケー

ション開発を提供しています。独⾃自のノウハウにより、短

期間でマルチコア環境へ移植、プログラムの最適化を⾏行行い、

⾼高速なアプリケーションを実現します。    

!  

マルチコア向け最適化サービス

20 お客様   弊社   オリジナルコードを解析 し計算ボトルネックを特 定、移植⽅方針や利⽤用する ハードウェアを決定   GPU  またはCell/B.E. への移植、コアへの 分散、SIMD化   移植後のコードの実製品 への組み込み作業⽀支援や 技術トランスファー   オリジナルコードのご提供   最適化サービス   プロファイリング   移植・最適化   サポート  

(21)

!  

技術者向けの様々な活動

 

いち早くマルチコアプログラミングに取り組んで

いる当社では、マルチコアに関する様々な技術情

報を公開しています。

 NVIDIA CUDA Information Site

 

NVIDIA

のCUDAインストールガイド、プログラミングチュート

リアルなどの情報を公開

  

http://gpu.fixstars.com

 

 

各種プログラミングセミナー

OpenCL

  

CUDA

  

Cell/B.E.

      

 

書籍  

 

「マルチコアCPUのための並列プログラミング」  

 

「ASCII.technologies 2009/12

(22)

!  

OpenCL

⼊入⾨門本

 2010

年1⽉月22⽇日  発売予定

(23)

!  

OpenCL

への取り組み

 

効率的でポータビリティの⾼高いソフトウェアを実現する

OpenCL

ベースの製品やサービスを提供しています。

  FOXC

 OpenCLソースファイルを⼊入⼒力力とするSource to Sourceコンパイラ

OpenCL Source Code

FOXC

HW依存Code

バックエンドコンパイラ

Executable FOXC Runtime Library

  β

版無償提供中

(24)

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

(25)

!  

Hybrid  FOXC  

  様々な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  

Infiniband, PCIe,

(26)

!  

OpenCL  Eco-system  

 

OpenCL

環境を整備し、利⽤用しやすい開発環境の提供を

⽬目指します

 

統合開発環境

 Eclipse べースのOpenCLプラグイン  中間⽣生成コードのデバッグ機能

  Yellow Dog Enterprise Linux for Multi Core

 ハイブリッドシステムのホストとなるX86サーバーをサポート  各種OpenCLコンパイラ、ライブラリ、のプリインストール  CUDA等をプリインストール・サポート(商⽤用Linux OS初)  OpenCL開発環境と、Linux環境の統⼀一的な技術サポート

26

(27)

  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アプリケーションの性能を引き出すテクニックについて解説     ベクタ処理     データ並列処理     タスク並列処理  

次回

1月20日(水)

[email protected]

参照

関連したドキュメント

(※)Microsoft Edge については、2020 年 1 月 15 日以降に Microsoft 社が提供しているメジャーバージョンが 79 以降の Microsoft Edge を対象としています。2020 年 1

環境への影響を最小にし、持続可能な発展に貢

2030年カーボンハーフを目指すこととしております。本年5月、当審議会に環境基本計画の

Altera Nios II フォルダを展開し、Existing Nios II software build tools project or folder into workspace を選択します(図 2–9 を参 照)。.

[r]

  [ 外部環境 ] ・耐震化需要の高まり ・県内に非破壊検査業(コンクリート内部)を行うものが存しない   [

2017 年 12 月には、 CMA CGM は、 Total の子会社 Total Marine Fuels Global Solutions と、 2020 年以降 10 年間に年間 300,000 トンの LNG

「二酸化窒素に係る環境基準について」(昭和 53 年、環境庁告示第 38 号)に規定する方法のう ちオゾンを用いる化学発光法に基づく自動測