Logo Blogo

Snow Leopard: rivoluzione nel mondo delle schede video?

Pubblicato: 18 giu 2008 da Marcello Majonchi


La presentazione della versione preliminare di Mac OS X 10.6 Snow Leopard, pure in sordina rispetto a quella delle precedenti beta release di Mac OS X, sta cominciando a far parlare di sé via via che gli osservatori più squisitamente tecnici si addentrano nelle nuove feature.
Come abbiamo detto, Apple si è concentrata sull’architettura del sistema, inserendo novità davvero importanti, come OpenCL.

OpenCL è costituito da un gruppo di API che si occupano di gestire e distribuire il calcolo da e per i chip di elaborazione grafica; le API sono architecture-independent e in grado di compilare in tempo reale le istruzioni da inviare ai chip per l’elaborazione.

Apparirà chiaro a tutti che questo tipo di sistema ha come terreno di elezione il calcolo matematico in virgola mobile e, di conseguenza, l’accelerazione grafica: detta in parole povere (e con una certa dose di approssimazione) OpenCL è la strada scelta da Cupertino per sostituire, con un approccio totalmente software-oriented, la tecnologia Altivec dell’era PowerPC.

Ma alcuni osservatori hanno voluto gettare l’occhio un po’ più avanti, ipotizzando gli scenari che si potrebbero aprire con il consolidamento di questa tecnologia.
OpenCL potrebbe essere utilizzato per eseguire le istruzioni fornite da OpenGL: questo significherebbe non solo poter fare a meno dei driver specifici delle schede video, ma guadagnare notevolmente in efficienza, potendo distribuire il calcolo tanto alla GPU quanto alle CPU presenti.
E’ evidente come un approccio di questo tipo supererebbe il paradigma “CPU->Sistema->Driver->GPU” che ha dominato la scena negli ultimi anni.

E questo è solo un esempio delle possibilità che si aprono davanti agli sviluppatori.
OpenCL, infatti, non è pensato come un elemento esclusivo di Mac OS X, ma come uno standard aperto a tutti, la cui gestione è stata affidata a Khronos Group, consorzio che si occupa del patrocinio e della promozione di standard informatici distribuiti come API royalty free, tra cui lo stesso OpenGL.

Lo slogan scelto da Apple per Snow Leopard è “Core Innovation” e, alla luce di quanto stiamo osservando, pare non essere solo marketing ma realtà.

1 stelle2 stelle3 stelle4 stelle5 stelle (4 Voti | Media: 5 su 5)
condividi condividi
42 commenti

Commenti dei lettori

(Inserisci un commento - Nascondi commenti anonimi)
  • Profilo di .:Clarus:.

    .:Clarus:.

    18 giu 2008 - 07:16 - #1
    -1 punto
    Up Down

    Pretty Cool

  • Profilo di Emanuele139

    Emanuele139

    18 giu 2008 - 07:21 - #2
    0 punti
    Up Down

    “Apparirà chiaro a tutti che…”

    Mi prendi in giro?? :D

  • Profilo di geno

    geno

    18 giu 2008 - 07:21 - #3
    0 punti
    Up Down

    ma…quindi?

  • Profilo di FabiuS

    FabiuS

    18 giu 2008 - 07:46 - #4
    -1 punto
    Up Down

    Che bello!

  • Commento #5 (-7 punti) - 18 giu 2008 - 07:46 - Apri commento
  • Profilo di Diego

    Diego

    18 giu 2008 - 07:46 - #5 (nascondi)
    -7 punti
    Up Down

    mmmm devo informarmi meglio perchè certe cose ancora mi sfuggono, ma la prima domanda che mi pongo ora è:

    OsX con il tempo e seguendo questa direzione diventerà ufficialmente un sistema operativo PC ?!!! o resterà (come vivamente spero) “recluso” nei Mac ?
    Svincolarsi dai driver, significa anche svincolarsi da hardware preciso… ok che qui si sta parlando solo di schede video, ma… oggi sono le schede video domani è il resto ;-)

  • Profilo di randoman

    randoman

    18 giu 2008 - 07:56 - #6
    1 punto
    Up Down

    Avevo già sentito parlare di OpenCL e mi pare proprio una bella tecnologia. Veramente credevo potesse servire per indirizzare alla GPU anche calcoli di natura non grafica… Almeno da quanto si legge in giro parrebbe proprio così

  • Profilo di Marcello Majonchi

    Marcello Majonchi

    18 giu 2008 - 07:58 - #7
    1 punto
    Up Down

    @randoman

    OpenCL si occupa di distribuire il calcolo sulle CPU/GPU disponibili: dunque vale sia il calcolo non grafico sulla GPU che il calcolo grafico sulla CPU…
    M.

  • info_dodo

    18 giu 2008 - 08:06 - #8
    1 punto
    Up Down

    Non ci ho capito niente, ma se è meglio è ok.

  • Profilo di malfix

    malfix

    18 giu 2008 - 08:16 - #9
    1 punto
    Up Down

    @randoman
    Dal comunicato stampa:
    Snow Leopard estende ulteriormente il supporto per l’hardware moderno con Open Computing Language (OpenCL), che permette a qualsiasi applicazione di attingere agli ampi gigaflop di potenza di calcolo delle GPU che era in precedenza disponibile solo per gli applicativi grafici. OpenCL si basa sul linguaggio di programmazione C ed è stato proposto come uno standard aperto.

    In effetti dall’articolo non avevo neppure capito io bene cosa intendessero.. :-p

  • Profilo di RoLune

    RoLune

    18 giu 2008 - 08:18 - #10
    1 punto
    Up Down

    Per chi, come me, non ha capito ricorderei una frase del nostro amico Jobs che riguardo una nuova tecnologia di Mail dice: “What is this? I don’t know, but it works!” cioè “Che cosa è? Non lo so, ma funziona”.

    Se si tratta di una soluzione in grado di distribuire calcolo su più cpu (sia grafiche che non).

    R.

  • AleCutu

    18 giu 2008 - 08:25 - #11
    1 punto
    Up Down

    Veramente qui lo slogan è italiano :D
    http://www.apple.com/it/macosx/snowleopard/
    Al centro dell’innovazione

    Ciao ciao

  • Profilo di uomopanda

    uomopanda

    18 giu 2008 - 09:03 - #12
    0 punti
    Up Down

    Il Mac è superiore a tutti, e pensa sempre oltre gli orizonti dove nessuno può mai arrivare…

  • Fonfon

    18 giu 2008 - 09:19 - #13
    1 punto
    Up Down

    L’ipotesi di eliminare il driver video usando al suo posto OpenCL e’ campata in aria.
    Un driver ci deve essere, che sia quello della scheda o che sia all’interno di OpenCL, sempre di driver video si tratta, salvo il fatto che nella seconda ipotesi per ogni nuova scheda bisognerebbe aggiornare OpenCL, il quale diventerebbe un monolitico e pachidermico mega driver per tutte le schede supportate, cosa veramente senza senso.

  • Fonfon

    18 giu 2008 - 09:22 - #14
    -2 punti
    Up Down

    @uomopanda
    come se nVidia non avesse inventato CUDA (che e’ la stessa cosa di OpenCL) da tempo!
    Possibile che i fanboy della Apple siano cosi’ naive?
    Ma piantatela di farvi le pugnette guardandovi allo specchio!!!

  • Profilo di fix-1

    fix-1

    18 giu 2008 - 09:29 - #15
    0 punti
    Up Down

    @fonfon
    fantastico!

  • Dino78

    18 giu 2008 - 09:51 - #16
    0 punti
    Up Down

    Da quello che ho capito io la questione è questa: visto che le schede grafiche odierne hanno una enorme potenza di calcolo che però viene sfruttata solo in poche occasioni (ovvero, quando si gioca o si usano applicativi 3D), allora l’idea è quella di distribuire il normale carico di lavoro tra CPU e GPU. Cioè, quello che attualmente fa soltanto la CPU, con OpenCL sarà distribuito tra i due processori. In questo modo si aumenta il parallelismo. Ovviamente questo è ciò che mi è sembrato di capire, senza essere assolutamente certo di ciò.

    @fonfon:
    è vero che eiste CUDA da un pò di tempo, ma credo che funzioni solo per le schede grafiche nVidia. Sembra invece che OpenCL si astragga dalla specifica scheda grafica. Cmq è bello che ci siano diversi concorrenti. In questo modo entrambe le aziende saranno spronate a migliorare la propria tecnologia.

  • Profilo di retos

    retos

    18 giu 2008 - 10:05 - #17
    0 punti
    Up Down

    Credo che OpenCL non possa funzionare senza driver GPU che siano compatibili OpenCL. Come potrebbe accedere alle CPU altrimenti?
    Credo che si appoggi o al driver o ad un livello di astrazione intermedio tra se e il driver, quale CUDA.
    Penso, ripeto penso, che OpenCL sia un tentativo di standardizzare l’approccio alla distribuzione del carico sulle risorse di calcolo (CPU, GPU, PhyPU, ASIC, DSP), come lo e’ stato OpenGL.

  • Dino78

    18 giu 2008 - 10:15 - #18
    1 punto
    Up Down

    Concordo con retos.

  • Profilo di retos

    retos

    18 giu 2008 - 10:25 - #19
    1 punto
    Up Down

    @Dino78

    e dammelo un punticino, allora… :-)

  • Fonfon

    18 giu 2008 - 10:47 - #20
    0 punti
    Up Down

    @Dino78
    non puoi distribuire il normale carico di lavoro tra una CPU e una GPU, la GPU non ha le istruzioni necessarie e non ha ne’ l’accesso alla RAM ne’ ad altri device, quello che puoi fare e’ inviare alla GPU dei calcoli da fare, ma si parla di operazioni matematiche non di generico carico di lavoro.
    Non si tratta di parallellismo, ma solo di “delegare” la GPU per effettuare calcoli matematici, ad esempio un filtro di photoshop.
    Il vantaggio di OpenCL e’ che rappresenta un’interfaccia universale cosi’ come ad esempio e’ DirectX sotto Windows (chiarisco che DirectX ha chiaramente altri obiettivi rispetto a OpenCL ma sono simili concettualmente), e quindi le applicazioni non devono piu’ preoccuparsi di gestire direttamente la scheda video, OpenCL e’ un layer di astrazione, nessuna rivoluzione solo normale evoluzione ;-)

  • Profilo di bobo_italy

    bobo_italy

    18 giu 2008 - 11:04 - #21
    0 punti
    Up Down

    Volevo far notare che non serve OpenCL per sostituire AltiVec… in tutti i processori Intel usati da OS X c’è MMX, SSE e SSE2, e in alcuni SSE3 che sono delle estensioni molto simili ad AltiVec. La stessa Apple da informazioni agli sviluppatori su come convertire il codice AltiVec in codice per SSE:
    http://developer.apple.com/documentation/Performance/Conceptual/Accelerate_sse_migration/migration_intro/chapter_1_section_1.html#//apple_ref/doc/uid/TP40002729-CH204-DontLinkElementID_1
    Comunque OpenCL è molto importante per migliorare ulteriormente le prestazioni di alcune applicazioni che fanno uso intensivo della CPU e, a differenza delle librerie specifiche per ATI o nVidia, hanno la bella proprietà di funzionare con tutti gli hardware che le supportano… Sono d’accordo con Fonfon che dice che non è una rivoluzione ma solo una buona evoluzione.

  • Profilo di aChamp

    aChamp

    18 giu 2008 - 11:40 - #22
    0 punti
    Up Down

    @bobo: il problema è il contrario, cioè convertire istruzioni CPU–>GPU e fare in modo che la GPU si degni di elaborarle

  • iPC

    18 giu 2008 - 12:00 - #23
    0 punti
    Up Down

    @Diego
    OSX è installabile su macchine PC dalla prima versione x86.
    Cerca su google - build Hackintosh - Attenzione potrebbe far male al tuo cuoricino.

  • Profilo di Dino78

    Dino78

    18 giu 2008 - 12:05 - #24
    0 punti
    Up Down

    @fonfon:
    quello che mi sembra di capire dalle scarse informazioni che circolano è che invece si sta cercando di fare proprio quello! Cioè realizzare un layer a cui gli sviluppatori possano appoggiarsi proprio per accedere alla potenza delle gpu. Il comunicato stampa recita così: “[…] che permette a qualsiasi applicazione di attingere agli ampi gigaflop di potenza di calcolo delle GPU che era in precedenza disponibile solo per gli applicativi grafici […]” Quindi dice espressamente che ogni applicazione, anche non grafica, potrà far uso della potenza di calcolo delle GPU.

    Cmq, piccolo appunto, questo è proprio il concetto di parallelismo.

  • Profilo di bobo_italy

    bobo_italy

    18 giu 2008 - 13:08 - #25
    0 punti
    Up Down

    @aChamp
    forse hai frainteso quello che dicevo… stavo solo criticando quello che è scritto nell’articolo, ovvero che OpenCL serve per sostituire AltiVec… OpenCL è una aggiunta, una cosa in più, che potrà spostare alcuni calcoli dalla CPU alla GPU per migliorare le prestazioni generali del sistema.

  • Profilo di Diego

    Diego

    18 giu 2008 - 15:52 - #26
    0 punti
    Up Down

    @iPc conosco bene, ma una cosa è l’Hackintosh un’altra è quella che Apple decida di rendere installabile in sitema operativo su un qualsiasi pc.

    @Tutti, data la valangata di meno che mi avete attribuito solo per capire, ma che ho detto che vi ha fatto così scatenare ???

  • Profilo di Cino

    Cino

    18 giu 2008 - 16:19 - #27
    0 punti
    Up Down

    Speriamo che questo contribuisca a svruttare pienamente la vera potenza che il multicore sa offrire. Ora mi chiedo se però non sarebbe il caso di adottare moduli di ram con un frequenza almeno pari all’fsb del processore, in modo da evitare inutili colli di bottiglia…

  • manni

    18 giu 2008 - 17:45 - #28
    0 punti
    Up Down

    sinceramente mi rendo sempre piu’ conto di aver speso 2000 euro solo per l’estetica del mac..tanto ormai e’ in voga quanto windows,basta considerare anche l’ultimo articolo sullo sviluppo..bhe.. scordiamoci l’elite di apple,presto iniziera’ l’era degli antivirus su mac,e si ribaltera’ la situazione,tra vent’anni ci saranno collezionisti di scatole di windows e pc vecchi, e tutti odierano il colosso apple…
    io credo sia meglio che apple con il suo mac os x rimanga nella sua conca indisturbato dal mondo esterno..

  • Fonfon

    18 giu 2008 - 19:18 - #29
    0 punti
    Up Down

    @Dino78
    io non ho detto che OpenCL puo’ essere usato solo per la grafica, ho detto che puo’ essere usato solo per calcoli matematici, e quello che hai riportato conferma esattamente quanto detto da me, i GigaFlop sono un’unita’ di misura del calcolo in virgola mobile, puro calcolo matematico, non certo elaborazione di dati tipo stringhe (tanto per fare un esempio).
    Il parallelismo e’ tutta un’altra cosa, questo e’ solo delega di calcolo matematico.
    Un esempio di parallelismo e’ lo “srotolamento” di un ciclo FOR nel quale esegui in parallelo le istruzioni all’interno del ciclo stesso per multipli del contatore, quindi ad esempio un ciclo per N da 0 a 100 lo parallelizzi su 4 processori e ogni processore esegue 25 cicli.
    Questo e’ tutt’altra cosa rispetto a usare la GPU come super unita’ per il calcolo floating point.

  • Fonfon

    18 giu 2008 - 19:23 - #30
    1 punto
    Up Down

    @Dino78
    se vuoi vedere un esempio di estensione dei moderni linguaggi di programmazione in ottica parallel programming leggi qua:
    http://msdn.microsoft.com/en-us/concurrency/default.aspx
    si tratta di tutt’altra bestia rispetto a OpenCL ;-)

  • Profilo di Dino78

    Dino78

    18 giu 2008 - 19:36 - #31
    0 punti
    Up Down

    @fonfon:
    capisco quello che dici e lo condivido. Però l’esempio che hai portato del ciclo FOR è uno dei tanti tipi di parallelismo. Nel senso che per architettura parallela si intende anche un processore coadiuvato dal co-processore matematico. Una GPU affiancata da un processore per la simulazione della fisica è un esempio di architettura parallela. In questo senso io parlo di “parallelismo”. Ciò che tu dici essere “delega”, per me è “parallelismo”.

    Per quanto riguarda le possibili applicazioni, visto che le GPU sono essenzialmente SIMD, si prestano benissimo a campi diversi, come analisi OLAP, cifratura ecc… Per questo secondo me si può arrivare al vero e proprio parallelismo.

  • Profilo di Dino78

    Dino78

    18 giu 2008 - 19:40 - #32
    0 punti
    Up Down

    @fonfon:
    ho dato un’occhiata veloce al link che hai postato.

    In realtà quando penso al parallelismo penso più al lato architetturale (sono ingegnere informatico). Forse è per questo che abbiamo due visione un pò diverse.

    Cmq, ne è nata una bella conversazione.

  • Fonfon

    18 giu 2008 - 21:11 - #33
    0 punti
    Up Down

    Dino, chiaramente il parallelismo software richiede che sotto ci sia un hardware per poterlo supportare, quindi bisogna avere piu’ unita’ di calcolo, ma in generale devono essere identiche, gia’ parallelizzare con multiprocessori identici e’ un bel problema figuriamoci se la cosa deve essere fatta tra processori che hanno un set di istruzioni diverso (come nel caso di CPU e GPU che hanno un hardware completamente diverso e in particolare la GPU ha solo accesso alla propria RAM dedicata e a null’altro, ad esempio non puo’ accedere ai driver di rete tanto per fare un esempio).

    Quindi OpenCL non fa altro che far diventare la GPU un super coprocessore matematico, non so se hai presente come erano i PC un po’ di anni fa? C’era la CPU e poi separatamente c’era il coprocessore per il calcolo in virgola mobile.

    Poi col tempo il coprocressore e’ stato integrato nella CPU e poi sono state aggiunte istruzioni estese per elaborazione specifiche di audio e video (SSE) che utilizzano particolari trasformazioni matematiche.

    Adesso che le GPU hanno superato le CPU per potenza di calcolo diventa interessante poterle sfruttare come veniva sfruttato il coprocessore matematico una volta.

    Nessuno si ricorda dei Quadra 840AV e 610AV? Oltre alla CPU Motorola 68040 avevano un coprocessore DSP AT&T 3210 che era un processore “simile” ad una GPU ovvero un’unita’ di calcolo matematico, ad esempio veniva sfruttato come modem, rendendo cosi’ necessario un semplice adattatore seriale e delegando al DSP tutto il processing del segnale telefonico.

  • Profilo di Dino78

    Dino78

    18 giu 2008 - 23:15 - #34
    0 punti
    Up Down

    Ciao fonfon… Ottimo, effetivamente stiamo dicendo cose simili da punti di vista diversi. Seppur ragazzino, ricordo quando iniziarono a vedersi i primi coprocessori matematici. E quello che dico è, proprio come hai detto tu, che OpenCL (così come altre tecnologie) faranno diventare le GPU delle immense scorte di calcolo. Però, per me parallelismo significa anche concorrere alla soluzione di uno stesso problema. Se devo fare l’analisi di un DataWarehouse, posso delegare l’analisi OLAP alla GPU e contemporaneamente posso far girare il sistema OLTP con la CPU.

    Però adesso ho capito meglio cosa intendi quando dici “delegare”

  • Fonfon

    19 giu 2008 - 10:28 - #35
    0 punti
    Up Down

    Dino,
    quando si parla di software (come in questo caso, OpenCL e’ un software) il termine parallelismo ha un significato molto preciso e poco opinabile.
    Il termine parallelismo non si applica a OpenCL perche’ un programma che utilizzi OpenCL non e’ che si mette a fare qualcos’altro mentre la GPU fa i conti, bensi’ aspetta che il calcolo finisca.
    Poi chiaro che un programma puo’ lanciare piu’ thread e in un thread far fare calcoli alla GPU e in un altro thread fare qualcos’altro ma in quel caso non si parla di parallelismo ma solo di multithreading che e’ una cosa diversa.
    Il parallelismo e’ qualcosa di cui si prende cura il sistema senza bisogno che sia il programma a lanciare espressamente piu’ thread, anzi e’ proprio il contrario, il programma definisce una serie di operazioni in un singolo thread e il sistema provvede a distribuirne il carico su piu’ processori (o core).
    OpenCL invece prende le operazioni matematiche definite in un thread e decide se farle fare alla CPU o alla GPU.

  • Profilo di Dino78

    Dino78

    19 giu 2008 - 11:54 - #36
    0 punti
    Up Down

    Io continuo a dire che stiamo dicendo la stessa cosa, solo che tu non lo chiami “calcolo parallelo”. Cioè, il parallelismo a livello di thread è una tipologia di calcolo parallelo. L’utilizzo di un coprocessore che semplicemente elabori su richiesta una certa quantità di dati e restituisca i risultati, rientra in una tipologia di calcolo parallelo. Ora, non so perchè tu dica che invece questo non è calcolo parallelo. E’ vero che questi sono ricordi che ho dall’Università, ma non credo che sia sbagliato ciò che dico.

  • Profilo di Dino78

    Dino78

    19 giu 2008 - 12:20 - #37
    0 punti
    Up Down

    Aggiungo una cosa. Hai scritto: “Il termine parallelismo non si applica a OpenCL perche’ un programma che utilizzi OpenCL non e’ che si mette a fare qualcos’altro mentre la GPU fa i conti, bensi’ aspetta che il calcolo finisca.” Da dove hai preso questa informazione? Cioè, è una cosa che immagini tu oppure l’hai letta? In questo caso ti chiedo cortesemente di darmi il link, così posso legere qualcosa di più anche io. Forse è proprio su questo punto che non ci capiamo.

  • marcust

    19 giu 2008 - 14:28 - #38
    0 punti
    Up Down

    Spero che l’opencl faccia sparire le integrate da tutti i futuri mac.
    Una intel Xqualcosa la sopporterei solo su una eventuale appletv con atom..

  • gfhfds

    20 giu 2008 - 09:22 - #39
    0 punti
    Up Down

    secondo me sarà un mattone assurdo sto opencl

  • gfhfds

    20 giu 2008 - 09:26 - #40
    0 punti
    Up Down

    madòòò! il parallelismo è l’eseguire più istruzioni contemporaneamente , ovvero avere in running nelle cpu più di un programma contemporaneamente!!!!!!!!
    Con i vecchi processori a un solo core non era possibile , e si ricorreva( ancora oggi lo si fà) al multithreading ovvero ogni programma va in run nella cpu per un determinato tempo e poi si mette in coda e aspetta che arrivi il suo turno di nuovo

  • Profilo di Dino78

    Dino78

    20 giu 2008 - 09:50 - #41
    0 punti
    Up Down

    In base a quale criterio dici che sarà un mattone? Ovviamente è una domanda senza polemiche, semplice curiosità.

  • Profilo di Dino78

    Dino78

    20 giu 2008 - 09:51 - #42
    0 punti
    Up Down

    Faccio una piccola precisazione a quello che hai scritto: non è un PROGRAMMA ad essere in esecuzione, ma un PROCESSO. Sono due cose diverse.

L'email è richiesta ma non verrà mostrata ai visitatori.
Commenta questo articolo

Registrati per commentare e per entrare nella community di melablog. Potrai inserire immagini, video, partecipare alle discussioni nei vari gruppi o crearli e inviare messaggi privati agli altri utenti registrati. Se sei già registrato, effettua il login per usare il tuo nickname.

Si No
I commenti sono sottoposti alle linee guida per la moderazione.

Anteprima del commento