为PlayStation 3 Linux开发

时间:2009-01-22 00:57:42

标签: ide sdk playstation ps3

我有兴趣为Sony PlayStation 3游戏机开发软件,其中包含多核Cell处理器,定位任何PS3-compatible Linux分发。

  

“单个PS3比可用的最高端桌面执行更好,并与IBM Blue Gene 超级计算机的 25个节点进行比较。“PlayStation3 Gravity Grid

最重要的是:

  1. CPU - 7 has access to 6
  2. 中的任何Linux操作系统Synergistic Processing Elements
  3. GPU - Sony实施了限制访问RSX
  4. 的虚拟机管理程序
  5. 并行 - IBM在PS3上提供introduction to programming parallel applications
  6. 所以要开始:

    1. 安装Linux on the PS3
    2. 使用适合该Linux的编译器获取IDE。 ..(帮助!)

4 个答案:

答案 0 :(得分:4)

您也可以尝试使用Ubuntu 8.10(Intrepid Ibex)。他们的PS3支持非常好,可以找到安装说明和编译的粗略入门here。 GCC 4.3和binutils 4.18包括Cell PPU(通用PowerPC目标)和SPU的目标,Ubuntu存储库中有可用的包(例如spu-gcc,spu-g ++,spu-binutils,ppu-gdb,spu-newlib)等等,它会为你编译二进制文件。

就适当的IDE而言,上述实用程序应与任何IDE(即KDevelop,Eclipse CDT,Code :: Blocks)完美集成,只要您能找到语法高亮文件(适用于大多数流行的IDE)。 Cell SDK也可用,并且可能提供更好的集成,并且可用于RHEL 5.2和Fedora 9的软件包(应该能够使用 alien 将这些软件引入Debian / Ubuntu,但不确定在那)。

OpenMPI是一个好主意,他们已经能够为基于Cell的刀片(here)编译它,所以我不认为它应该是一个问题。您也可以滚动自己的消息传递,因为低开销是提取Cell上的良好性能的关键(虽然我不知道OpenMPI对此有多适合,但它可能很棒)。

答案 1 :(得分:2)

Matthew Scarpino的书编程细胞处理器,是最新的,并且有很多好的信息。此外,website for the book有很多可供下载的示例代码。

还有一个MIT course通过Cell处理器进行并行编程,它有一些很好的信息,虽然有些信息是过时的,即它使用了旧的单元机制,其中libspe提供了自己的线程。使用最新版本的库,您需要从其他地方获取线程(pthreads,boost,等等)以运行并行程序。

对于操作系统和编译器,我一直在使用Yellow Dog Linux 6.1。到目前为止,YDL已经相当不错,比Fedora 9要好得多,尽管这很可能是因为YDL带有超轻量级窗口管理器而Fedora 9没有。我在网络方面遇到了一些问题,但这些问题很可能是我系统设置的稍微奇怪的网络环境的产物。

一旦我启动并运行了YDL,我就在上面安装了单元sdk fedora软件包(这需要一些工作,因为cellsdk安装脚本错误地将YDL识别为RHEL,而不是Fedora)。 YDL确实在他们的一个软件包repos中提供了大部分SDK,但是默认情况下没有安装它,只有编译器(当然,直到我已经攻击了IBM安装程序才能完成正确的事)。我只是使用基本的IBM编译器(不是XL的东西)。

IBM site周围还散布着大量的信息,但有点难以理解。

答案 2 :(得分:2)

您可以尝试使用Codeplay Software中的Offload C++。它提供了扩展的C ++方言,简化了Cell处理器等多核硬件上的软件开发。

交叉编译工具链允许在Windows上编译PS3的代码,这对于运行Linux的PS3控制台上的资源限制(例如系统内存)很有用,这可能会影响编译时间并使用PS3作为桌面尴尬。

Offload C ++编译器和工具的版本可用于使用Cell BE SDK的PS3 GameOS和Linux on Cell。 Cell Linux版本与IDE的CDT CD集成。

免责声明:我是Codeplay的开发人员。

答案 3 :(得分:1)

在特殊设计的SPE上运行代码时要小心 - 默认堆栈大小因编译器而异,并且在溢出时会导致各种问题。在SPE代码中全局声明大多数数据通常是一种很好的做法,除了非常小的变量分配外,避免堆栈。

由于没有缓存(或者......它的所有L2缓存,在某种意义上),这样做没有真正的性能损失,并且你永远不会遇到像尝试向内存地址或从内存地址DMA数据这样的问题那不再有效等等。

IBM SPE编译器通常被认为是最好的,但我个人从未使用它。