Sei sulla pagina 1di 25

Linux per il calcolo ad alte prestazioni sul processore CELL

Hardware Linux sulla Playstation 3 Visione Artificiale ad alte prestazioni Dimostrazione

Il Processore CELL

Si trova principalmente in due tipi di sistemi:

Sony Playstation 3

IBM Server Blade (QS20)

Propone un'architettura parallela rivoluzionaria

L'Hardware della Playstation 3

Principali Caratteristiche
Programmabile come un PC convenzionale 8 processori vettoriali indipendenti Bus memoria indipendente Processa 1024bit per ciclo di clock

Power Processing Element (PPE)

La Playstation 3 ha un core POWER-PC a 3.2GHz Pu utilizzare istruzioni vettoriali, le AltiVec La sua funzione principale controllare e organizzare i

calcoli eseguiti sulle SPU

POWER

Ha un'elettronica molto semplice Dissipa poco calore un processore RISC, ogni istruzione viene eseguita in un solo ciclo di clock Ideale per sistemi compatti e funzioni di controllo

Synergistic Processing Elements (SPE)


Sono processori RISC con 128 registri da 128bit. Le performance migliori si ottengono utilizzando istruzioni vettoriali (Single Instruction Multiple Data) Ogni SPE ha 256Kb di memoria ad accesso veloce (simile alla cache) Non possono accedere direttamente alla RAM, ogni accesso svolto tramite DMA.

Esempio: Real-Time RayTrace

Il Processore CELL pu raggiungere i 204.8GFLOPS

Linux sulla Playstation 3

Due distribuzioni supportate:


Fedora Yellow Dog

Facile installazione Linux non elimina il Game OS

Yellow Dog 5

disponibile all'indirizzo http://www.terrasoftsolutions.com

Installazione
Installare Linux sulla PlayStation 3 simile ai PC tradizionali. Prima di tutto, occorre scaricare:

YDL 5 DVD ISO PS3 OtherOS installer from Sony (otheros.self) YDL bootloader from Terra Soft (otheros.bld)

Prima di iniziare l'installazione vera e propria: necessario avere una chiavetta USB, deve essere creata una directory usbdisk/PS3/otheros, in cui vanno messi otheros.self e otheros.bld

Dal GameOS, partizionare l'HardDisk dal menu System->System Settings->Format Utility selezionando l'opzione Allot 10GB to the Other OS

Installazione

Inserire la chiavetta USB. Dal menu System Settings selezionare Install Other OS Dal menu System Settings selezionare Default System, Spegnere e riaccendere PlayStation 3 Inserire il DVD di YellowDog Al prompt, digirare install oppure installtext...

scegliere OtherOS e premere X.

L'ambiente Linux

Yellow Dog 5 utilizza Enlightenment 17 Sono disponibili tutti i software per linux Utilizza il sistema di pacchetti RPM, e il tool di aggiornamento YUM Sono disponibili molti tool di sviluppo

CELL SDK
Per promuovere questa nuova architettura, IBM ha reso disponibile l'SDK (all'indirizzo: http://www.ibm.com/developerworks/power/cell/ )

L'SDK supporter le future fasi di sviluppo del CELL Comunit OnLine molto attiva

I tool di sviluppo

ppu-gcc compilatore per il codice da eseguire sulla PPU spu-gcc compilatore GNU per il codice da eseguire sulle SPU empedspu compilatore speciale che inserisce codice SPU nel codice PPU spuxlc compilatore IBM ottimizzato per le SPU

Senza codice SPU, la playstation 3 si programma come un normale Quindi, fondamentale che il software sia progettato in modo da

sistema POWER-Pc... senza nessun vantaggio prestazionale

usare le SPU

Esempio: CELL_Hello_World

Il programma che gira nelle SPU molto semplice:

#include "../hello.h" int main(unsigned long long speid, addr64 argp, addr64 envp) { printf("Hello world, from a SPU!\n"); return 0; }

Esempio: CELL_Hello_World

Il programma che gira nelle SPU molto semplice:

#include "../hello.h" int main(unsigned long long speid, addr64 argp, addr64 envp) { printf("Hello world, from a SPU!\n"); return 0; }

Nella PPU invece...

Esempio: CELL_Hello_World
#include [...] extern spe_program_handle_t hello_spu; spe_gid_t gid; speid_t speids[8]; int status[8]; int main(int argc, char *argv[]) { int i; printf("Hello World!\n"); for (i = 0; i < 8; i++) { speids[i] = spe_create_thread (SPE_DEF_GRP, &hello_spu, NULL, NULL, -1, 0); if (speids[i] == NULL) { fprintf (stderr, "FAILED: spe_create_thread(num=%d, errno=%d)\n", i, errno); exit (3+i); } } for (i=0; i<8; ++i spe_wait(speids[i], &status[i], 0); return 0; }

Sfruttare il CELL comporta un approccio alla programmazione completamente differente


Ogni SPU gestita attraverso un thread nella PPU Le SPU accedono ai dati (RAM di sistema) attraverso un

canale DMA (indipendente)

Visione Artificiale ad alte prestazioni: Man Identifier


Cervello elettronico per l'identificazione di esseri umani: Task complesso ma procedure semplici grazie al calcolo lineare

Estrazione dei contorni Individuazione di atomi

Composizione di atomi per l'identificazione di oggetti complessi

Grazie al CELL: Ogni fase viene eseguita su una SPU diversa

L'architettura particolarmente adatta al calcolo lineare

Difference Filter
Calcolare la prima derivata: f(i) = p(i) p(i+2)
p(10) p(11) p(12) p(15)

=
128 bit (16 pixels) per ciclo di clock

p(12)

p(13)

p(14)

p(17)

f(10)

f(11)

f(12)

f(15)

Seconda derivata: s(i) = f(i) > f(i+2)


f(10) f(12) sl(10) f(11) f(13) sl(11) f(12) f(14) sl(12) f(15) f(17) sl(15)

f(i) > f(i-2)


f(12) f(10) sr(12) f(15) f(13) sr(15)

> =

f(10) f(8) sr(10)

f(11) f(9) sr(11)

> =

sl(10) sr(10) sr(10)

sl(11) sr(11) sr(11)

sl(12) sr(12) sr(12)

sl(15) sr(15) sr(15)

Calcolo Lineare: Atomi


Dopo aver estratto i contorni col difference filter, si passa all'individuazione degli atomi Discriminare configurazioni random di pixel da pattern fondamentali Consideriamo atomi tutte le possibili sezioni di linea in un'area di 5x5 pixel Accesso alla memoria in modo sparso; lento per i PC convenzionali

lookup table

225 elementi

Man_id: prestazioni

Su un PC convenzionale:

Lo stesso programma su PlayStation 3:

8ms invece che 118... ~15volte pi veloce

...e ora una dimostrazione

Potrebbero piacerti anche