本サイトは、マルチコア トータルソリューションカンパニー -フィックスターズの技術者有志が運営するサイトです。
PS3でHello, Worldプログラミング
出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう
English / Japanese
PS3の上でSPEを使ったプログラムを書くにはいくつかの方法があります。 ここでは、PS3上で伝統的な"Hello, World" を実現するプログラムをいくつか紹介します。
なお、SPEから"Hello, World"をコンソールに書き出すという処理は、 実質上はSPEからPPEのprintf処理を呼び出しているだけです (SPEは直接I/Oにアクセスすることはできませんから、 SPE上のI/O入出力関数は内部ではすべてPPEに送られて処理されます)。 従って、本ページのプログラムは、真の意味では ほとんどSPEの演算能力は使っていません。 また、PS3の性能を活かし切るには、SPEをただ使うだけではなく、 SIMD演算による並列演算やDMA転送の二重化などをいかに行うかが鍵となります。
それでも、 SPE上でプログラムを動かすフローを理解したり、 libspe1とlibspe2の違いを概観したりするには、 本ページにあるプログラムの骨組が役に立つのではないかと思います。
libspeの概要についてはLibspeの概要を、libspeを使ったプログラミング環境の構築の詳細についてはLibspeプログラミング環境の構築を参照してください。また、libspeの既知の不具合についてはLibspeの既知の不具合を参照してください。
- ソースコードアーカイブをダウンロードする: Media:hw-samples-all.tar.gz
目次 |
[編集]
PPEを使ったHello, World
- 必要rpm: 特になし
- 概要: PPEプログラムから出力
- 実行方法: シェルプロンプトから ppe-main を実行
- ソースコード: ppeディレクトリ以下
[編集]
SPEを使ったHello, World
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe実行環境およびelfspe (1 or 2)
- 概要: SPEプログラムから出力
- 実行方法: シェルプロンプトから spe-main を実行
- ソースコード: speディレクトリ以下
[編集]
SPEを使ったHello, World libspe 1.X版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 1.X
- 概要: PPEからSPEプログラムを呼び出し、SPEプログラムから出力
- 実行方法: 同ディレクトリに spe-main があることを確認して、シェルプロンプトから ppe-main を実行
- ソースコード: libspe1ディレクトリ以下
[編集]
SPEを使ったHello, World libspe 1.X + embedspu版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 1.X
- 概要: PPEからPPEバイナリ中に埋め込まれたSPEプログラムを呼び出し、SPEプログラムから出力
- 実行方法: シェルプロンプトから ppe-main を実行
- ソースコード: libspe1-embedspuディレクトリ以下
[編集]
複数SPEを使ったHello, World libspe 1.X版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 1.X
- 概要: PPEからSPEプログラムを複数呼び出し、"Hello, World"メッセージをSPEにDMA転送してSPEプログラムから出力
- 実行方法: 同ディレクトリに spe-main があることを確認して、シェルプロンプトから ppe-main を実行
- ソースコード: libspe1-multiディレクトリ以下
[編集]
SPEを使ったHello, World libspe 2.0.X 版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 2.0.X
- 概要: PPEからSPEプログラムを呼び出し、SPEプログラムから出力
- 実行方法: 同ディレクトリに spe-main があることを確認して、シェルプロンプトから ppe-main を実行
- ソースコード: libspe2ディレクトリ以下
[編集]
SPEを使ったHello, World libspe 2.0.X + embedspu版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 2.0.X
- 概要: PPEからPPEバイナリ中に埋め込まれたSPEプログラムを呼び出し、SPEプログラムから出力
- 実行方法: シェルプロンプトから ppe-main を実行
- ソースコード: libspe2-embedspuディレクトリ以下
[編集]
複数SPEを使ったHello, World libspe 2.0.X版
- 必要rpm: SPE用開発ツール(spu-gccなど + SPU newlib), libspe 2.0.X
- 概要: PPEからSPEプログラムを複数呼び出し、mboxでSPEに"Hello, World"メッセージが置かれたメモリアドレスを通知し、SPEにメッセージをDMA転送してSPEプログラムから出力
- 実行方法: 同ディレクトリに spe-main があることを確認して、シェルプロンプトから ppe-main を実行
- ソースコード: libspe2-multiディレクトリ以下
