ACCEDI

Password dimenticata?

×
Seguici su Instagram Feed RSS Seguici su YouTube
Pagina 6 di 6 PrimaPrima ... 23456
Visualizzazione risultati da 51 a 53 su 53

Snow Leopard (Mac OS 10.6)

  1. #51
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Quote Originariamente inviata da =DaDa= Visualizza il messaggio
    sono interessato, ma nn ci capisco nulla...



    mi puoi fare un riassuntino veloce?
    Su Grand Central? In pratica è una tecnologia sviluppata da Apple per poter creare applicazioni che sfruttano il più possibile i processori multi-core. Detto in altre parole, consente agli sviluppatori di sfruttare al meglio le potenzialità offerte dai nuovi processori Intel. Grand Central non è altro che un insieme di funzioni che consentono di distribuire l'esecuzione di un blocco codice su diversi core, in modo da fare, per esempio, 4 moltiplicazioni contemporaneamente se il processore è quad-core.
    Il fatto è che esistono già tecnologie simili, OpenMP è una di queste. Nativamente in ambienti Unix esistono API di sistema (funzioni già implementate e supportate dal kernel) che consentono di lavorare in multi threading. E' il sistema operativo che si occupa della gestione dei thread e dei core fisici. Il fatto è che ogni "tecnologia" ha i suoi pregi e i suoi difetti, o è più avanzata di altre.
    Le mie conoscenze si fermano al fatto che mi capita di usare classi Cocoa pensate per il multithreading o di aver usato in passato il multi threading di windows e quello di Unix. Il fatto è che Grand Central è pensato proprio per i multi-core. Quindi ha un occhio di riguardo non solo al multi threading (che consiste nell'esecuzione di più thread su uno o più core), ma proprio alla gestione ottimale di più core.
    Spero che ci sia qualcuno in grado di dirti di più e in modo più dettagliato, io non ho le basi teoriche per la trattazione approfondita di multithreading e calcolo parallelo.
    Posso dirti che il multithreading esiste da un sacco di tempo su windows e su linux. Un thread non è altro che un processo figlio di un processo padre. Pensa ad esempio ad iTunes. Hai un thread che gestisce l'interfaccia grafica e mentre accedi all'Apple Store il thread dell'interfaccia tiene viva l'interazione tra te e iTunes, mentre il thread che gestisce la connessione all'Apple Store fa quello che deve fare. Quando termina, il thread dell'interfaccia, per esempio, ferma l'animazione della barra di caricamento. Oppure mentre masterizzi, hai sempre il thread dell'interfaccia (quello c'è sempre su OS X), il thread che masterizza, il thread che monitora la masterizzazione.
    Pensa ora di avere un processore con 1 core. Tutto questo viene gestito da un core, appunto, un'operazione alla volta. Hai una timeline, e ogni istante viene dedicato ad un processo con una proporzione di tempo. Il thread d'interfaccia può avere, ad esempio, 10 nanosecondi, poi tocca al thread di masterizzazione, poi al thread dell'interfaccia e poi al thread di monitoraggio della masterizzazione (sto facendo un esempio a caso). Tutto questo avviene sequenzialmente perché hai un core, ma avviene in modo parallelo perché da un punto di vista macroscopico porti avanti 3 thread contemporaneamente (anche se nell'infinitesimo di tempo ne porti avanti 1 alla volta).
    Con il multi core invece è diverso, perché puoi, ad esempio, far sì che negli stessi 10 nanosecondi il core 1 gestisce il thread d'interfaccia, il core 2 il thread di masterizzazione e il core 3 il thread di monitoraggio della masterizzazione. E qui, a meno di un discorso di "imbuto" per quanto riguarda il trasferimento dati da CPU a RAM e a tutto il resto, ottieni una parallelizzazione quasi perfetta, perché i dati vengono processati contemporaneamente.
    In modo mooolto approssimativo le cose dovrebbero funzionare così.. capisci però che ci sono di mezzo tanti fattori per quanto riguarda l'ottimizzazione di elaborazione e quindi le prestazioni. Ci sono i chip hardware (i controller) che si occupano a livello più basso di gestire il tutto e poi arrivi all'astrazione software massima che opera a livello di sistema operativo, ed è quella che decide quale thread assegnare a quale core, e quanto tempo di elaborazione assegnarli (per non parlare poi del discorso della ram e degli accessi a ram, che avvengono - credo - in modo seriale e sono quindi più complicati). Ecco, GCD interviene proprio qui, ed è qui che OS X può intervenire per ottimizzare le prestazioni.
    Nella programmazione multi threading infatti ci sono un sacco di problemi che si formano per via naturale dalla scelta di voler parallelizzare un qualcosa che di per se è seriale.
    Mi spiego meglio: capita anche nella vita reale di essere in più persone a voler usare lo stesso telefono per fare una telefonata; e come si fa? Bisogna decidere chi chiama per primo e per quanto tempo. Lo stesso capita qui, ma in modo ancora più complicato. Parliamo di risorse che vengono utilizzate per un tot da n thread differenti, i quali sono regolati da dei semafori o addirittura da dei thread di monitor (vedi ad esempio il thread di monitoraggio della masterizzazione). Semafori e thread di monitor rappresentano l'implementazione del concetto di Mutex (Mutex - Wikipedia ).
    Capisci che quel di cui si ha bisogno è un'astrazione software che renda efficiente al massimo e più semplice possibile la programmazione multi threading.

    Quando si parla di windows vs mac vs linux spesso si scade nella banalità. Io credo che uno dei punti da tenere in considerazione sia proprio questo del multithreading, perché meglio è implementata la tecnologia che supporta la parallelizzazione, più potenti saranno i programmi di elaborazione (nel 3D, in applicazioni scientifiche, in applicazioni grafiche, nella videoludica, nella compressione, etc..).
    Ogni sistema operativo moderno (Windows, Linux, OS X, BSD e altri) supportano il multithreading. GCD è una delle tante soluzioni alla gestione multi threading applicata al multi core. E sembra essere buona.

    Aggiungo ancora due righe: in Snow Leopard è stata introdotta anche OpenCL. Che cos'è? In pratica è un insieme di API (esattamente come GDC) che consentono di passare al processore grafico della scheda video istruzioni riguardo l'elaborazione di semplici operazioni. I processori grafici hanno set di istruzioni elementari differenti da quelli delle CPU e generalmente non hanno le capacità di fare tutte le operazioni che le CPU fanno. Quindi con OpenCL non fai tutti i tipi di calcoli.
    Resta il fatto che la potenza di una GPU (Graphic Processing Unit - processore grafico) con VRAM annessa (Video RAM) è notevolmente superiore a quella di una CPU, perché una scheda video è una sorta di mini-computer. Quindi far lavorare la scheda video per dei calcoli mentre lavora anche la CPU è un modo per raddoppiare (a spanne) la potenza di calcolo e dimezzare i tempi di esecuzione.
    Quindi: OpenCL + GDC sono due tecnologie nuove proiettate verso la parallelizzazione e lo sfruttamento ottimale delle risorse hardware.
    E' questo a cui mi riferisco quando parlo di "software" che fa la differenza e non di hardware. Le potenzialità di una CPU intel su di un Mac sono le stesse su di un PC. Però se il sistema operativo che gira non è in grado di sfruttare al meglio tali potenzialità, allora ottieni prestazioni e risultati insoddisfacenti per l'hardware che hai.
    A questo si aggiunge il fatto che OS X è Unix-based (ovvero ha un cuore Unix) e quindi è stabile e leggero.

    PS: se ritenete che ho detto stupidate correggetemi, son cose non semplici e io sono un profano..
    PPS: dada, non si può sapere fino a dove una tecnologia si spinge se non c'è qualcuno in grado di sfruttarla al meglio. Su windows il multithreading lavora diversamente rispetto a OS X, e i pregi e i diffeti ci sono per entrambi. Il fatto è che su windows esiste una contro parte di GCD, la Parallel Extensions (http://en.wikipedia.org/wiki/Task_Parallel_Library#TPL ).

  2. #52
    Overdose da FdT dada
    Iscrizione: 12/1/2006
    Messaggi: 9,710
    Piaciuto: 21 volte

    Predefinito

    la storia dell'openCL la sapevo già...questa mi risultava completamente nuova...
    sinceramente mi aspettavo qualcosa del genere, ma gli esempi mi hanno semplificato la comprensione

    una cosa sola...all'utente ke nn é sviluppatore, ke nn usa programmi 3D, scientifici...questa innovazione da dei vantaggi visibili o riscontrabili?

  3. #53
    Vivo su FdT
    Uomo 36 anni da Milano
    Iscrizione: 30/4/2005
    Messaggi: 3,821
    Piaciuto: 12 volte

    Predefinito

    Quote Originariamente inviata da =DaDa= Visualizza il messaggio
    una cosa sola...all'utente ke nn é sviluppatore, ke nn usa programmi 3D, scientifici...questa innovazione da dei vantaggi visibili o riscontrabili?
    Da dei vantaggi visibili o riscontrabili se e solo se utilizza applicazioni che implementano GCD, OpenCL o che sfruttano la tecnologia 64bit.
    In generale comunque il sistema operativo stesso è più veloce, perché è pensato per GCD, OpenCL e i 64bit.
    In Snow Leopard è stata migliorata proprio la gestione di memoria e processi (processi e thread), quindi in generale il sistema è più veloce.
    Un esempio che mi viene in mente al volo: http://www.macnification.com/features/ (in fondo c'è un elenco delle tecnologie implementate).

    Il concetto è che Apple, così come Microsoft, offre dei framework (pacchetti di librerie utilizzabili dagli sviluppatori) pensati per creare applicazioni robuste e potenti ma anche per sfruttare le potenzialità del sistema operativo. Nel caso di Apple i punti di forza stanno principalmente nelle tecnologie che implementa e nel modo in cui le implementa (come dicevo prima questo vale soprattutto per GCD). Cocoa è il framework che consente di creare applicazioni con interfaccia grafica ed è pensato per crearle rimanendo nella filosofia Apple. Core Animation è pensata per andare oltre e creare interfacce personalizzate che sfruttano OpenGL (il layer software più vicino alla scheda video) e che risultano il più leggero possibile in termini di gestibilità da parte del computer. ImageKit è, invece, un altro framework pensato per la gestione e la visualizzazione immagini che però è fatto male, non nel senso che non sia utile, ma nel senso che è difficilmente utilizzabile dagli sviluppatori. Macnification usa ImageKit, ma sono poche le applicazioni che lo utilizzano.. invece sono molte quelle che utilizzano CoreAnimation, CoreAudio, lo saranno quelle che useranno GCD, lo sono quelle che usano QuartzCore etc..
    La potenza di un sistema operativo sta anche in cosa si riesce a creare e a come lo si riesce a far girare sulla macchina. Mac ha i suoi punti di forza rispetto a win, e viceversa. Però non posso dirti nulla riguardo a win perché non lo utilizzo.

Pagina 6 di 6 PrimaPrima ... 23456

Discussioni simili

  1. Snow Patrol - Run
    Da Brainscan nel forum Video musicali
    Risposte: 0
    Ultimo messaggio: 2/3/2009, 3:25
  2. Bob Lido - Let It Snow
    Da ~Erestor Inglorion~ nel forum Video musicali
    Risposte: 0
    Ultimo messaggio: 26/12/2008, 13:19
  3. MySQL su Leopard
    Da §¤PREISER¤§ nel forum Internet e computer
    Risposte: 9
    Ultimo messaggio: 11/12/2008, 1:09
  4. Leopard su PC?
    Da Lantis nel forum Internet e computer
    Risposte: 23
    Ultimo messaggio: 15/10/2008, 15:57
  5. JJ72 - Snow
    Da KristaL* nel forum Video musicali
    Risposte: 0
    Ultimo messaggio: 28/2/2008, 16:32

Tag per questa discussione