cell/b.e. プログラミング事始め

37
わんくま同盟 名古屋勉強会 #12 公開版 プログラミング事始め

Post on 28-May-2015

1.377 views

Category:

Technology


8 download

DESCRIPTION

http://www.wankuma.com/seminar/20100313nagoya12/ わんくま同盟 名古屋勉強会 #12での発表資料。

TRANSCRIPT

Page 1: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

公開版

プログラミング事始め

Page 2: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

0.自己紹介

・ 読み:ユー アンド アイ

・出身 生まれも育ちも名古屋市

・年齢 30代前半

・本職 文系出身の プログラマ

・日記

わんくま勉強会への参加は今回で 回目

Page 3: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

※本資料に出てくる製品等に係わる商標は、それぞれの会社に帰属するものです。

Page 4: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 5: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. Cell/B.E. とは

Cell/B.E.(Cell Broadband Engine)とは、Sony(SCE含む)・IBM・東芝によって開発された、PowerPCアーキテクチャベースの64bit RISCマイクロプロセッサ(ARM, MIPS, SPARC等)のこと。

Cellはマルチコア構成となっており、PPE(PowerPC Processor Element)と呼ばれる制御を担う汎用プロセッサコアと、複数のSPE(SynergisticProcessor Element)と呼ばれる演算を担うコアで構成される。

PPE/SPEはPC向けのCPUとは異なり複雑な命令予測機構を搭載しない事でコアを単純化して高クロック化を実現している。

SPEのエンディアン順序はビッグエンディアンとなる。PC向けのCPU(AMDPhenom, Athlon, Intel Coreシリーズ)はリトルエンディアン。

Page 6: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 7: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

2. Cell/B.E. の歴史(1/2)

1999年 SonyとIBM(International BusinessMachines)との間でPS2後継のプロセッサ設計のパートナーシップを結ぶ。

2001年 SCE(Sony Computer Entertainment), 東芝,IBMがマルチメディア向けのプロセッサ開発で提携を発表。

2004年 4GHz超で動作するプロセッサの製造に成功。Cellの正式発表。

2005年 SCEがPS3(PlayStation3)を発表

2006年 SCEがPS3を発売。IBMはSDKを公開。

2008年 アメリカ空軍が研究目的でPS3を300台購入

Page 8: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

2. Cell/B.E. の歴史(2/2)

2008年 IBMのCellベースのスパコン(BladeCenterQS)が世界最速となる。

2008年 東芝がSpursEngine(CellベースのLSI)を出荷。

2009年 新型PS3 CECH-2000シリーズ発売。

2009年 IBMがサーバー向けプロセッサPowerXCell8iの後継プロセッサの開発中止を発表。

2009年 アメリカ空軍がスパコン用途でPS3(CECHP01)を2,200台購入。

2009年 東芝がCell REGZA 55X1を発売。

2010年 旧型PS3で閏年の誤判定問題発生。

Page 9: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 10: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(1/6)

・PS3を用意する。

→CECH-2000以降のものは「Open Platform forPLAYSTATION3」に未対応なのでNG。

"PS3"のモデル別の機能の違いは?

http://www.jp.playstation.com/support/qa-718.html

・PS3のHDDの空き領域を準備する。

・PS3にLinuxをインストールする。

・PS3のLinuxにCell SDKインストールする。

・PCにCell SDKをインストールする。

Page 11: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(2/6)

開発環境としてPS3以外に選択肢は無いのか?

→東芝のSpursEngine(スパーズエンジン)というCellベースのLSIを搭載したノートPCやI/Fカードが存在する。

※SpursEngineのネーミング(冊子より引用)

"spur"は英語で「拍車」を意味する。パソコンのスピードに拍車をかけるエンジンだということで名付けられた。

Page 12: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(3/6)

SpursEngineの歴史

2005年 技術検討

2006年 試作設計を開始

2007年 開発サンプルを公開

2008年 SpursEngine SE1000出荷開始

Page 13: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(4/6)

Cell/B.E. の構成の比較表

PS3 REGZA 55X1 SpursEngine

PPE1個

(3.2 GHz動作)1個

(動作クロック不明)

PPEの代わりとなるControl

Processorを搭載

SPE7個

(3.2 GHz動作)7個

(動作クロック不明)4個

(1.5 GHz動作)

その他 ー ー

H.264・MPEG-2のハードウェアエンコーダ・デコーダ搭載

Page 14: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(5/6)

Cell/B.E. 搭載製品(1/2)

・PC

[PowerXCell 8i]

IBM:IBM BladeCenter QSシリーズ

[SpursEngine]

東芝:Qosmioシリーズ

Leadtek:LR1A01-SpursEngine Barebone システム

・ExpressCard

[SpursEngine]

Leadtek:WinFast HPVC1100 (38K~)

Page 15: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

3. Cell/B.E. の開発環境の選定(6/6)

Cell/B.E. 搭載製品(2/2)

・PCI-Express

[PowerXCell 8i]

FIXSTARS:GigaAccel 180 (920K~)

[SpursEngine]

Thomson Canopus:FIRECODER Blu (44K~)

Leadtek:WinFast PxVC1100 (20K~)

Leadtek:WinFast PxVC1100 for HP (10K~)

Page 16: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 17: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(1/8)

用意するもの

・PC

PCI-Express x1スロットを持つもの

・Cell/B.E.

Leadtek WinFast PxVC1100

・OS

Microsoft Windows XP以降

・コンパイラ

Microsoft VisualStudio 2008 SP1(Express Edition以上)

Cygwin

・SDK

Microsoft Windows SDK(DirectShow SDKが必要な為)

Leadtek SpursEngine SDK(Cell SDKも含まれる)

Page 18: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(2/8)

構築手順とか注意・補足事項とか基本は下記のサイトを参照。

Leadtek Research Inc. SpursEngine SDK クイック スタート ガイド

http://www.leadtek.co.jp/SpursEngine_SDK-Quick_Start_Guide/

1.1 Microsoft VisualC++ 2008 Express Editionのインストール

http://www.microsoft.com/japan/msdn/vstudio/express/

インストール後にMicrosoftUpdateを実行して、ServicePack1他を入れる。

1.2 Microsoft Windows SDK for Windows 7 and .NET Framework 3.5SP1

http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&DisplayLang=en

クイックスタートガイドには記載がないけれど、VC++のパス設定が必要。

Page 19: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(3/8)

[ツール]→[オプション]→[プロジェクトおよびソリューション]の[VC++ ディレクトリ]を選択する。

[ディレクトリを表示するプロジェクト]で[インクルード ファイル]と[ライブラリ ファイル]の先頭にWindows SDKのパスを追加する。

Page 20: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(4/8)

余談ですが、VisualC++ 2005 SP1とMicrosoft Windows SDK forWindows 7 and .NET Framework 3.5 SP1を組み合わせて利用する場合も注意が必要。

FIX: VisualC++ 2008を使用してビルドされた.libファイルまたは.objファイルをVisualStudio 2005 SP1でリンクすると、エラーメッセージ:"致命的なエラー LNK1103: デバッグ情報が壊れています"

http://support.microsoft.com/kb/949009/

Page 21: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(5/8)

1.3 Cygwin (シグウィン) をインストールする

http://cygwin.com/setup.exe

最新版の場合は、SpursEngine SDKのインストールでCygwinのインストール先が見つけられないので、以下の処置を行う。

WinFast PxVC1100 特設サイト > Cygwin 1.7.1 について (2010.01.20)

http://www.leadtek.co.jp/SpursEngine_special.html

あと手順書だと、「Devel」ツリー配下を全部インストールするように指示されていますけど、gcc, gcc-g++, make, expat辺りをインストール。

Cygwinの設定内容やインストールパッケージの一覧は以下のコマンドで。

$ cygcheck -srv > info.txt

$ more ./info.txt

Page 22: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(6/8)

2.1. SpursEngine SDK をダウンロードする

http://www.leadtek.com/spursengine/

「SDK1_5.rar」「SDK1_2.rar」「Linux_SDK_v1_5_3_2.rar」が入手可能。

RAR形式のアーカイブの解凍にはWinRARや7-Zipを利用する。

2.2. SpursEngine SDK をインストールする

・「SDK1_5.rar」を解凍する。

・「spe_sdk_1_1_0_2.rar」を解凍し「setup_spe_sdk_1.1.0.2.exe」をインストール。

・「lib_1_5_3_2.rar」を解凍し「setup_lib_1.5.3.2.exe」をインストール。

・「tutorial_1_5_1_2.rar」を解凍し「setup_tutorial_1_5_1_2.exe」をインストール。

Windows環境向けは「%ProgramFiles%\TOSHIBA」に、Cygwin環境向けは 「/opt/cell」「/opt/tsb」にSDKがインストールされる。

Page 23: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(7/8)

SpursEngine SDKに含まれるインクルードヘッダやリンクライブラリの入ったフォルダへのパスをVisualStudioに設定する必要があるが、これらはWindows SDKの時のようにVisualStudioの環境設定で行うのではなく、各VC++プロジェクト毎に行う。理由は、リンクライブラリ名がRelease/Debug版で同じで別フォルダに格納されている為。環境設定ではビルド条件での切り替えが行えない。

%ProgramFiles%\TOSHIBA\SpursEngine\include\vc

%ProgramFiles%\TOSHIBA\SpursEngine\include

%ProgramFiles%\TOSHIBA\SpursEngine\lib

%ProgramFiles%\TOSHIBA\SpursEngine\lib_debug

Page 24: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

4. Cell/B.E.(SpursEngine) の開発環境の構築(8/8)

2.3. 手順通り

2.4. 手順通り

2.5. 手順通り

2.6. SpursEninge SDK をビルドする

プロジェクトのSpursEngine SDKのフォルダ構成が変更になっていたりするので、インクルードヘッダやリンクライブラリへのパスの修正が必要。

以降はクイック スタート ガイドの手順通り。

Page 25: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 26: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(1/8)

ツール等

SPU GNU Toolchain :SPE用 GNU ツールチェーン、

SPE プログラムデバッガ

Eclipse IDE :SpursEngine対応統合開発環境

PMTOOL :パフォーマンスモニタ コマンドラインツール

PM GUI :パフォーマンスモニタ 設定・表示ツール

LDSG :SPU オーバーレイリンカスクリプト生成支援ツ

ール

Page 27: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(2/8)

ライブラリ

SPHA :SE1000ファームウエアライブラリ(for Windows)

SPSA :SE1000ファームウエアライブラリ(for Cygwin)

SpursStream :ストリーム型データ通信ライブラリ

CANDI :SE1000ビデオコーデックミドルウエアライブラリ

CANDI :SE1000ビデオ顔認識ミドルウエアライブラリ

SPADE :SE1000ビデオエンコードミドルウエアライブラリ

CLUB/SUF :SE1000ビデオコーデック及びSPEを用いたストリーム

処理、SPE上で動作するSUF(SPE User Filter)機能を

提供するCOM I/Fミドルウェア

Page 28: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(3/8)

ここでSDK付属のサンプルプログラム(SPHA/SPSA)を見てみる

「sample_program.rar」を解凍する。

「sample_program\SpursInfo_1_0b」を開く。

ファイル構成(Windows側, ホスト側)

vs2005\SpursInfo.sln :VC++のソリューション

vs2005\SpursInfo.vcproj :VC++のプロジェクト(SpursInfo.exe)

main.cpp :main関数

run_spe_simple.cpp :各SPEへのプログラム転送及び実行

制御のI/F実装

run_spe_simple.h :上記のI/F宣言

ファイル構成(Cygwin側, SPE側)

Makefile.spe :Makefile(hello.elf)

hello.c :main関数

Page 29: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(4/8)

基本的なSPHAのAPIの説明

ホスト側のセッション端点の確立/破棄

spha_create_session( ... );

spha_delete_session( ... );

SE1000側のセッション端点の確立/破棄

spha_connect_session( ... );

spha_close_session( ... );

Page 30: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(5/8)

SE1000のローカルメモリ構築・破棄

spha_create_memory( ... );

spha_map_memory( ... );

spha_unmap_memory( ... );

SE1000のローカルメモリへの転送

spha_data_transfer_to( ... );

SPE制御用のスレッド制御

spha_create_spe_thread( ... );

spha_resume_spe_thread( ... );

spha_wait_spe_thread( ... );

Page 31: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(6/8)

実行結果

Page 32: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(7/8)

Windows上は、PE形式(Portable Executable)で、

SPE上は、ELF形式(Executable and Linking Format)な

バイナリなのは分かったけど、デバッグはどうするのか?

SpursEngine SE1000チュートリアル 全体概要

(SRK_Tutorial_intro_Rev_1_0_ja.pdf) - P.23

SpursEngine SE1000 リファレンスキット

SPE ソフトウェア開発ツールV1 ユーザーズガイド

(SRKj_SPESW_Dev_Tool10_UG_Rev1-0.pdf) - P.35

Page 33: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

5. Cell/B.E.(SpursEngine) のSDKを<●><●>(8/8)

デバッグ中の画面

Page 34: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

1. とは

2. の歴史

3. の開発環境の選定

4. の開発環境の構築

5. の を覗いてみる

6.まとめ

Page 35: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

6. まとめ(1/2)

・Cell/B.E. は今後組み込み用途が中心となりそう

・Microsoft Windows上でCell/B.E.向け開発ができる環境もある

・SpursEngine向けの開発では、Windows上のプログラムと、SPE上のプログラムの2種類が必要

Page 36: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

6. まとめ(2/2)

時代はGPGPUか?

General-Purpose computation

on Graphics Processing Units

・OpenCL(Open Computing Language)

・Microsoft DirectCompute

・ATI Stream

・NVIDIA PhysX

・NVIDIA CUDA

Page 37: Cell/B.E. プログラミング事始め

わんくま同盟 名古屋勉強会 #12

参考リンク・書籍

SCE > Cell Broadband Engine

http://cell.scei.co.jp/

IBM developerWorks > Cell Broadband Engine resouce center

http://www.ibm.com/developerworks/power/cell/

東芝 セミコンダクター社 > メディアストリーミングプロセッサ:SpursEngine

http://www.semicon.toshiba.co.jp/product/assp/selection/spursengine/

Leadtek > SpursEngine

http://www.leadtek.com/spursengine/

Programming the Cell Processor

著者 :Matthew Scarpino

ISBN :978-0136008866