Domanda

Sono interessato allo sviluppo di software per Sony PlayStation 3 che contiene una processore cellulare multi-core , destinato a qualsiasi distribuzione Linux compatibile con PS3.

  

" Una singola PS3 offre migliore rispetto ai desktop di fascia più alta disponibili e confronta con un massimo di 25 nodi di un IBM Blue Gene supercomputer . " ~ PlayStation3 Gravity Grid

Soprattutto:

  1. CPU - Qualsiasi sistema operativo Linux ha accesso a 6 dei 7 Elementi di elaborazione sinergica
  2. GPU - Sony implementa un hypervisor che limita l'accesso a RSX
  3. Parallelo - IBM fornisce un introduzione alla programmazione di applicazioni parallele su PS3

Quindi, per iniziare:

  1. Installa Linux su PS3 :
  2. Ottieni un IDE con un compilatore adatto a quel Linux. .. (aiuto!)
È stato utile?

Soluzione

Puoi provare Offload C ++ dal software Codeplay. Fornisce un dialetto esteso di C ++ facilitando lo sviluppo di software su hardware multicore come il processore Cell.

Una toolchain cross-compilatore consente la compilazione di codice per PS3 su Windows, che può essere utile dati i vincoli di risorse (ad es. memoria di sistema) su una console PS3 che esegue Linux, che possono influire sui tempi di compilazione e fare uso di una PS3 come un desktop imbarazzante.

Sono disponibili versioni del compilatore e degli strumenti Offload C ++ destinati a PS3 GameOS e Linux on Cell con Cell BE SDK. La versione di Cell Linux si integra con Eclipse CDT per un IDE.

Dichiarazione di non responsabilità: sono uno sviluppatore di Codeplay.

Altri suggerimenti

Potresti anche provare Ubuntu 8.10 (Intrepid Ibex). Il loro supporto per PS3 è abbastanza buono, e le istruzioni per l'installazione e un primer approssimativo sulla compilazione sono disponibili qui . GCC 4.3 e binutils 4.18 includono target per Cell PPU (un target PowerPC generico) e SPU e ci sono pacchetti disponibili nei repository Ubuntu (ad es. Spu-gcc, spu-g ++, spu-binutils, ppu-gdb, spu-newlib , ecc.) che compilerà i file binari per te.

Per quanto riguarda un IDE corretto, le utilità di cui sopra dovrebbero integrarsi perfettamente con qualsiasi IDE (ad esempio KDevelop, Eclipse CDT, Code :: Blocks), a condizione che sia possibile trovare i file di evidenziazione della sintassi (disponibili per gli IDE più popolari). Anche l'SDK di cella è disponibile e potrebbe potenzialmente fornire una migliore integrazione e sono disponibili pacchetti per RHEL 5.2 e Fedora 9 (dovrebbe essere in grado di usare alien per estrarli in Debian / Ubuntu, ma non sono sicuro su questo).

OpenMPI è una buona idea, sono stati in grado di compilarlo per i blade basati su Cell ( qui ), quindi non credo che dovrebbe essere un problema. Puoi anche far passare il tuo messaggio, poiché un sovraccarico basso è la chiave per estrarre buone prestazioni sul cellulare (anche se non so quanto OpenMPI sia adatto a questo, potrebbe essere fantastico).

Il libro di Matthew Scarpino, Programmazione del processore cellulare , è piuttosto aggiornato e ha molte buone informazioni. Inoltre, il sito web per il libro ha molti esempi di codice disponibili per il download.

C'è stato anche un corso MIT sulla programmazione parallela tramite il processore Cell che ha alcune buone informazioni, anche se alcune sono obsolete, vale a dire, utilizza la vecchia meccanica cellulare in cui libspe ha fornito i propri thread. Con la versione più recente della libreria, dovrai eseguire i thread da altrove (pthreads, boost, qualunque cosa) per eseguire programmi paralleli.

Per quanto riguarda il sistema operativo e il compilatore, sto usando Yellow Dog Linux 6.1. YDL ha funzionato abbastanza bene finora, molto meglio di Fedora 9, anche se questo è probabilmente il risultato del fatto che YDL viene fornito con un window manager superleggero e Fedora 9 no. Ho avuto alcuni problemi con la rete, ma quelli sono probabilmente un prodotto dell'ambiente di rete leggermente bizzarro in cui ho installato il sistema.

Una volta che avevo YDL attivo e funzionante, ho installato i pacchetti fedora di sdk di cella (questo richiede un po 'di lavoro, poiché lo script di installazione di celldk riconosce erroneamente YDL come RHEL, non Fedora). YDL ha la maggior parte dell'SDK disponibile in uno dei loro repository di pacchetti, ma per impostazione predefinita non è installato molto, solo i compilatori (ovviamente, non l'ho capito fino a quando non avevo già hackerato il programma di installazione IBM per fare il cosa giusta). Sto solo usando i compilatori IBM di base (non roba XL).

Esistono anche molte informazioni sparse nel sito IBM , ma può essere un po 'difficile da capire.

Prestare attenzione quando si esegue codice sugli SPE con il loro design speciale: le dimensioni dello stack predefinite variano ampiamente da compilatore a compilatore e possono causare tutti i tipi di problemi in caso di overflow. Di solito è una buona pratica dichiarare la maggior parte dei dati a livello globale nel codice SPE ed evitare lo stack ad eccezione di allocazioni variabili molto piccole.

Dal momento che non c'è cache (o ... è tutta cache L2, in un certo senso), non c'è una vera penalità per le prestazioni nel fare questo, e non ci si imbatterà mai in problemi come provare a dati DMA da o verso un indirizzo di memoria che non è più valido, ecc.

Il compilatore IBM SPE è generalmente considerato il migliore, anche se non l'ho mai usato, personalmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top