1. BENVENUTO SU CONSOLE TRIBE

    Benvenuto, stai navigando nella nostra community come ospite

    Avere un account su Console Tribe ti permetterà di creare e partecipare alle discussioni e al mercatino, organizzare tornei e partite online, iniziare conversazioni personali con gli altri giocatori del forum e di utilizzare tutte le funzioni di questo sito.

    Registra il tuo account in meno di 5 secondi, se vuoi puoi sfruttare i login social via Facebook, Google Plus o Twitter.

Cell IBM SDK vs PI

Discussione in 'Ps3 Linux' iniziata da ennekappa, 13 Gennaio 2008.

  1. ennekappa

    ennekappa Tribe Newbie

    Registrato:
    5 Aprile 2007
    Messaggi:
    40
    "Mi Piace" ricevuti:
    0
    Punteggio:
    6
    Ho provato a scrivere un programmino di generazione cifre di pigreco per verficare la possibilità di sfruttare la potenza dei due processori Cell da Linux nel campo del calcolo numerico. Ora sto generando il primo milione di cifre, se qualcuno è interessato posto il sorgente e gli eventuali risultati :cool:
    Per la scrittura del programma e l'installazione delle SDK ho seguito la guida http://ww2.cs.fsu.edu/~west/cell/index.php?tutorial=HelloWorld

    Il programma è stato crosscompilato da Fedora 8 sul mio portatile e fatto girare su YDL 5.0.2 (dopo aver installato le libspe2) sulla PS3.
  2. nonnoSocrate

    nonnoSocrate Tribe Member

    Registrato:
    11 Aprile 2007
    Messaggi:
    191
    "Mi Piace" ricevuti:
    0
    Punteggio:
    16
    Molto interessante: mi piacerebbe conoscere i tempi di elaborazione compilando "standard" per PPE ed i tempi che si ottengono usando tutti gli SPE.
  3. fkb

    fkb Tribe Member

    Registrato:
    22 Marzo 2007
    Messaggi:
    1.432
    "Mi Piace" ricevuti:
    0
    Punteggio:
    38
    Località:
    127.0.0.1
    Ottimo. Sarebbe da postare in sezione DEV
  4. the-smoker

    the-smoker Tribe Newbie

    Registrato:
    26 Giugno 2007
    Messaggi:
    871
    "Mi Piace" ricevuti:
    0
    Punteggio:
    0
    a me interessa molto
    ..
    anche se non è un test importante ...
    può dare un'idea di quanto sia veloce un singolo spe

    @ nonnosocrate ...
    a differenza delle cpu SMP ...

    sugli SPE del cell il compilatore credo che sia poco influente ...
    conta di più il programmatore che sia in grado di prendere un algoritmo
    e dividerlo in più segmenti (in maniera equilibrata) da assegnare ai singoli spe ...

    da wikipedia
    Codice:
    [LEFT] # include <math.h>
    # include <stdio.h>
     
    int main (void) {
     
      int i, j, N=0;
     
      do {
        printf ("questo programma calcola i numeri primi tra 0 e N.\nInserisci N (N maggiore di 2):\n");
        scanf("%d", &N);
      } while (N < 2);
     
      printf("I numeri primi tra 0 e %d sono:\n 2\n", N);
     
      for (i=2; i <= N ; ++i) 
      {
        for (j=2; j<i; ++j) 
        {
          if(i%j==0) break; //i non è un numero primo
          if (j>=i/2)
          {
            printf (" %d\n",i);
            break;
          }
        }
      }
     
      printf("\n");
      return 0;
    } [/LEFT]
    
    
    
    questo algoritmo è poco parallelizzabile :D


    vi annuncio comunque che sono uscite le prime
    applicazioni che sfruttano questi benedetti SPE sotto linux

    ovviamente opensource

    http://cag.csail.mit.edu/ps3/blue-steel.shtml

    raytracing


    per chi come me ha provato le prime versioni di Pov-Ray sul mitico Amiga
    rimarrà a bocca aperta
  5. ennekappa

    ennekappa Tribe Newbie

    Registrato:
    5 Aprile 2007
    Messaggi:
    40
    "Mi Piace" ricevuti:
    0
    Punteggio:
    6
    Ok, il problema è che ho scritto un programma che gira su un solo SPE quindi per generare 10000 cifre di pi ci mette circa 200 sec.
    Devo trovare un'algoritmo paralello, mi piacerebbe trovare quello che usa superPi, qualcuno ne sa qualcosa?

    ennekappa ha aggiunto 6 Minuti e 0 Secondi più tardi...

    Si, avevo aperto un topic anche lì dopo che mi avete abilitato, si potrebbe spostare questo lì ed eliminare l'altro.
    Scusate del casino ma secondo avere DEV privato è abbastanza limitativo (anche se capisco perfettamente i buoni motivi di questa scelta) :D

    ennekappa ha aggiunto 81 Minuti e 55 Secondi più tardi...

    Però secondo me se teniamo alto il livello della conversazione dubito che qualcuno posti domande del tipo: "Posso installare Quake 3 per linux e vederlo con la grafica di Call of Duty 4?" senza vergognarsi :p

    ennekappa ha aggiunto 85 Minuti e 16 Secondi più tardi...

    Come programma per il pi avevo modificato questo http://www.boo.net/~jasonp/pirabern.c ma usa un solo SPE. :cry:
  6. the-smoker

    the-smoker Tribe Newbie

    Registrato:
    26 Giugno 2007
    Messaggi:
    871
    "Mi Piace" ricevuti:
    0
    Punteggio:
    0
    perchè non posti anche quanto ci mette lo stesso algoritmo a girare sul tuo PC ???

    sono molto curioso di comparare a parità di codice quanto sia performante un singolo spe rispetto a un processore tradizionale sotto linux.
  7. javajix

    javajix Tribe Member

    Registrato:
    3 Luglio 2007
    Messaggi:
    793
    "Mi Piace" ricevuti:
    0
    Punteggio:
    16
    Località:
    Ancona
    Il problema principale scrivendo software per cell è quello di parallelizzare i processi e poi riunire i risultati.

    Le librerie dell'SDK consentono "solamente" di utilizzare gli spe ma la parallelizzazione cioè l'assegnazione di ogni singolo task ad ogni spe la deve fare il programmatore.

    Altro grosso problema è che una volta parallelizzati i processi, i risultati vengono ritornati al processo principale in un ordine diverso da quello con il quale abbiamo inviato i task agli spe, qundi spetterà al programmatore ricostruire la sequenza esatta.

    Faccio un esempio:

    Task principale
    |
    |
    | --------> calcolo1 (5+5) SPE1
    |
    |
    | -------> calcolo2 (2+2) SPE2
    |
    |
    | -------> calcolo3 (4+4) SPE3

    Al task principale potrebbe tornare 4, 10, 8 al primo run poi la sequenza potrebbe cambiare.

    Quindi bisognerebbe utilizzare un identificativo per ogni task in modo poi da poter riunire i risultati nella corretta sequenza.
  8. ennekappa

    ennekappa Tribe Newbie

    Registrato:
    5 Aprile 2007
    Messaggi:
    40
    "Mi Piace" ricevuti:
    0
    Punteggio:
    6
    Ok, ho capito, mi sono documentato meglio, ho testato un programmino multithreading semplice sempile (helloworld)
    Per gli interessati ho aperto un 3d su ps3 DEV con il link ai sorgenti e screenshot, chiedete l'abilitazione che conquisteremo il mondo! :D
  9. GobboShow

    GobboShow Tribe Newbie

    Registrato:
    13 Aprile 2007
    Messaggi:
    20
    "Mi Piace" ricevuti:
    0
    Punteggio:
    1
    Molto interessante anche se mie conoscienze sono molto limitate. Il mio obbiettivo è quello di programmare in parallelo su un computer a 8 processori che presto arriverà presso la mia università, ma volevo avere delle delucidazioni e provare con mano!
    Premetto che la programmazione sarà con matlab e che con la PS3 nn è possibile (per quanto ne so io)! Ma programmare a basso livello con C++ non è un problema! Non ho capito come fare a usare la mia PS3 per questo scopo!
    Fai finata che non la PS3 sia appena uscita dalla scatola! Da dove parto? Cosa mi devo procurare? grazie!
    PS: come vedo i tuoi sorgenti?