本サイトは、マルチコア トータルソリューションカンパニー -フィックスターズの技術者有志が運営するサイトです。

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の既知の不具合を参照してください。


目次

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ディレクトリ以下

Libspe: PS3のプログラミング環境に戻る

表示
個人用ツール
オープンソースプロジェクト
ツールボックス