目次

これは何?

PS3 + Linux + CellSDK で行う Cell/B.E. (PS3に搭載されているCell) のSPEのプログラミング入門的内容の同人誌です. プログラミングをする上で知っておくと役に立つかも知れない情報を, nosuke が独断と偏見に基づいてまとめています. PDFで公開されている公式のドキュメント類は各階層ごとに非常に詳しく書かれているわけですが, いかんせん縦方向に弱いので,その辺を下から上までつないでみました. 完全にユーザ視点で書いているため, 公式のドキュメント類に頻出する絵に描いた餅ではなく, 実際に今 PS3 に搭載された Cell/B.E. でできることを対象とした内容となっています.

本書は上下巻の2部構成で目次は以下のようになっています. まずは目次を見て内容を察してやってください.

力の16倍編 (上巻)

  • 第1章 はじめに
    • 1.1 Cell/B.E.とSPE
    • 1.2 Cell/B.E.やSPEを搭載した機器
    • 1.3 Cell/B.E.向け開発環境
    • 1.4 本書のカバーする内容と想定する環境
  • 第2章 Cell/B.E.とSPE のアーキテクチ
    • 2.1 アーキテクチャとインプリメンテーション
    • 2.2 Cell/B.E.の全体構成
    • 2.3 PPE
    • 2.4 SPE
    • 2.5 アドレス空間とメモリモデル
    • 2.6 実際のCell/B.E.
  • 第3章 SPEを1個だけ使うプログラム
    • 3.1 SPEのプログラムを呼び出す流れ
    • 3.2 SPEのプログラムを動かす例
  • 第4章 SPEの演算機能
    • 4.1 バイトの並びとビットの番号
    • 4.2 ベクタ
    • 4.3 組み込み関数を用いたSIMD 演算
    • 4.4 SPEの浮動小数点数
    • 4.5 SIMD数学ライブラリ
  • 第5章SPEのコード最適化その1
    • 5.1 SPUのパイプラインのチューニング
  • 第6章 libspe2とspufs
    • 6.1 spufs
    • 6.2 libspe2

技の16倍編 (下巻)

  • 第7章 SPEを複数使うプログラム
    • 7.1 複数コンテキストの同時実行
    • 7.2 複数のSPEを同時に動かす例
  • 第8章 チャネルとメッセージング機構
    • 8.1 チャネル
    • 8.2 メールボックス
    • 8.3 シグナル
  • 第9章 DMA
    • 9.1 DMA転送の概要
    • 9.2 フェンスとバリア
    • 9.3 リストDMA
    • 9.4 アトミック更新
    • 9.5 DMAに関するその他の雑多な話題
  • 第10章 SPEのコード最適化その2
    • 10.1 分岐関連のチューニング
    • 10.2 ループ関連のチューニング
    • 10.3 DMA関連の最適化
    • 10.4 デクリメンタで実行時間を測る
    • 10.5 その他の最適化に関する話題
  • 第11章 イベント
    • 11.1 イベントの概要と管理
    • 11.2 イベントの種類
    • 11.3 イベントの検出と処理

各巻ともに本文70ページ程度の内容となっています. 無理矢理詰め込んでいるのでかなり窮屈な感じがするかもしれません. また,一見きれいに上下巻に分かれていますが, 相互依存が激しく片方だけだとかなり中途半端な内容となってしまいます. 興味がある方は「まずは上巻だけ入手して勉強して・・・」 なんて考えずに是非是非一気に両方揃えてしまうことをお勧めします. この機を逃すといつまた手に入るかわかりませんのでw (入手方法については後述)

なお,しら「」氏による趣味全開の表紙は萌え萌えですが, 中は「萌えるSPEプログラミング」というようなノリではなく ガチガチのてふてふです. お間違えのないよう,よろしくお願いします. 内容の雰囲気は,各巻の紹介をご参照ください.

誰得?

こんな人にお勧め・・・かもしれない

こんな期待には応えられないかも

目次を見て頂ければ何が書いてあって何が書いてないのか大体想像がつくかとは思いますが, たとえば以下のような話を期待している人は読むとがっかりすると思うので, ご注意ください.

わからないことや試せないことは書かない主義です (`・ω・´)・・・ っていっぱいありすぎて全然ダメじゃん (´・ω・`)

あと,PS3 Linuxのインストールの仕方やCellSDKのインストールの仕方, 基本的なLinuxのコマンドの使い方などについては, どう考えてもページが足りないので掲載しておりません. 他の参考書をあたってください.

それから,もしかしたらちょっとだけ難易度高めかもしれません. 特にアーキテクチャ系の用語とかOS系の用語とかがポンポン出てきます. これを機に勉強してみるというのであればよいのですが, そういうところから手取り足取り・・・ということを期待されてしまうと, やはりがっかりしてしまうかもしれません.

・・・ってこうして並べてみるとダメなところだらけの本にしか見えませんね・・・.

入手方法

コミックマーケット76 (C76) で頒布し,各巻100部完売致しました. 申し訳ありませんが,現在のところ,増刷や通販などの予定はありません. 冬コミ (C77) でリファイン版を頒布することを検討中です.

各巻の紹介

力の16倍編

上巻である『力の16倍編』は, 主にSPE単体の演算を中心とした構成となっています. メインとなる話題はハードウェアで持っているSIMD演算の紹介となります.

力の16倍編 表紙 力の16倍編 #31 力の16倍編 #40

また,その他,SPEの浮動小数点数演算における注意点や SIMD数学ライブラリの使い方,パイプラインのチューニング, libspe2やspufsの実装などについても簡単に触れています.

力の16倍編 #62 力の16倍編 #64 力の16倍編 #66

技の16倍編

下巻である『技の16倍編』は, 主にDMAを中心とした構成となっています. 単純なDMAによるデータの転送から, ストールつきのリストDMAや getllar/putllcとイベントを組み合わせたミューテックス, さらには低レイテンシな通信のためのアドレスの選び方の検証なんていう無駄にマニアックなことまで扱っています.

技の16倍編 表紙 技の16倍編 #23 技の16倍編 #33

また,その他,ループや分岐の最適化やメールボックスによる待ち合わせ, SPE上での割り込みを用いたイベントのハンドリングといった話題も扱っています.

技の16倍編 #15 技の16倍編 #61 技の16倍編 #65

サポート情報

ソースコードとか

訂正表

この他についても,発見・報告あり次第,随時掲載予定です.

更新情報



nosuke: <sasugaanijaのgmail.com> (ここでいう「の」は「@」みたいなものです)

Copyright© 2003-2012 nosuke All rights reserved.