cell/b.e. プログラミング事始め
Post on 28-May-2015
1.377 views
DESCRIPTION
http://www.wankuma.com/seminar/20100313nagoya12/ わんくま同盟 名古屋勉強会 #12での発表資料。TRANSCRIPT
わんくま同盟 名古屋勉強会 #12
公開版
プログラミング事始め
わんくま同盟 名古屋勉強会 #12
0.自己紹介
・ 読み:ユー アンド アイ
・出身 生まれも育ちも名古屋市
・年齢 30代前半
・本職 文系出身の プログラマ
・日記
わんくま勉強会への参加は今回で 回目
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
※本資料に出てくる製品等に係わる商標は、それぞれの会社に帰属するものです。
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #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シリーズ)はリトルエンディアン。
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #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台購入
わんくま同盟 名古屋勉強会 #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で閏年の誤判定問題発生。
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #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をインストールする。
わんくま同盟 名古屋勉強会 #12
3. Cell/B.E. の開発環境の選定(2/6)
開発環境としてPS3以外に選択肢は無いのか?
→東芝のSpursEngine(スパーズエンジン)というCellベースのLSIを搭載したノートPCやI/Fカードが存在する。
※SpursEngineのネーミング(冊子より引用)
"spur"は英語で「拍車」を意味する。パソコンのスピードに拍車をかけるエンジンだということで名付けられた。
わんくま同盟 名古屋勉強会 #12
3. Cell/B.E. の開発環境の選定(3/6)
SpursEngineの歴史
2005年 技術検討
2006年 試作設計を開始
2007年 開発サンプルを公開
2008年 SpursEngine SE1000出荷開始
わんくま同盟 名古屋勉強会 #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のハードウェアエンコーダ・デコーダ搭載
わんくま同盟 名古屋勉強会 #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~)
わんくま同盟 名古屋勉強会 #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~)
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #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も含まれる)
わんくま同盟 名古屋勉強会 #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++のパス設定が必要。
わんくま同盟 名古屋勉強会 #12
4. Cell/B.E.(SpursEngine) の開発環境の構築(3/8)
[ツール]→[オプション]→[プロジェクトおよびソリューション]の[VC++ ディレクトリ]を選択する。
[ディレクトリを表示するプロジェクト]で[インクルード ファイル]と[ライブラリ ファイル]の先頭にWindows SDKのパスを追加する。
わんくま同盟 名古屋勉強会 #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/
わんくま同盟 名古屋勉強会 #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
わんくま同盟 名古屋勉強会 #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がインストールされる。
わんくま同盟 名古屋勉強会 #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
わんくま同盟 名古屋勉強会 #12
4. Cell/B.E.(SpursEngine) の開発環境の構築(8/8)
2.3. 手順通り
2.4. 手順通り
2.5. 手順通り
2.6. SpursEninge SDK をビルドする
プロジェクトのSpursEngine SDKのフォルダ構成が変更になっていたりするので、インクルードヘッダやリンクライブラリへのパスの修正が必要。
以降はクイック スタート ガイドの手順通り。
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #12
5. Cell/B.E.(SpursEngine) のSDKを<●><●>(1/8)
ツール等
SPU GNU Toolchain :SPE用 GNU ツールチェーン、
SPE プログラムデバッガ
Eclipse IDE :SpursEngine対応統合開発環境
PMTOOL :パフォーマンスモニタ コマンドラインツール
PM GUI :パフォーマンスモニタ 設定・表示ツール
LDSG :SPU オーバーレイリンカスクリプト生成支援ツ
ール
わんくま同盟 名古屋勉強会 #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ミドルウェア
わんくま同盟 名古屋勉強会 #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関数
わんくま同盟 名古屋勉強会 #12
5. Cell/B.E.(SpursEngine) のSDKを<●><●>(4/8)
基本的なSPHAのAPIの説明
ホスト側のセッション端点の確立/破棄
spha_create_session( ... );
spha_delete_session( ... );
SE1000側のセッション端点の確立/破棄
spha_connect_session( ... );
spha_close_session( ... );
わんくま同盟 名古屋勉強会 #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( ... );
わんくま同盟 名古屋勉強会 #12
5. Cell/B.E.(SpursEngine) のSDKを<●><●>(6/8)
実行結果
わんくま同盟 名古屋勉強会 #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
わんくま同盟 名古屋勉強会 #12
5. Cell/B.E.(SpursEngine) のSDKを<●><●>(8/8)
デバッグ中の画面
わんくま同盟 名古屋勉強会 #12
1. とは
2. の歴史
3. の開発環境の選定
4. の開発環境の構築
5. の を覗いてみる
6.まとめ
わんくま同盟 名古屋勉強会 #12
6. まとめ(1/2)
・Cell/B.E. は今後組み込み用途が中心となりそう
・Microsoft Windows上でCell/B.E.向け開発ができる環境もある
・SpursEngine向けの開発では、Windows上のプログラムと、SPE上のプログラムの2種類が必要
わんくま同盟 名古屋勉強会 #12
6. まとめ(2/2)
時代はGPGPUか?
General-Purpose computation
on Graphics Processing Units
・OpenCL(Open Computing Language)
・Microsoft DirectCompute
・ATI Stream
・NVIDIA PhysX
・NVIDIA CUDA
わんくま同盟 名古屋勉強会 #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