Vai al contenuto

Intervista esclusiva: Ian Buck di Nvidia parla della GPGPU

    1651193043

    Incontra Ian Buck di Nvidia

    Grazie per aver dedicato del tempo a chattare oggi. Cominciamo con alcune nozioni di base. Perché non parli ai nostri lettori un po’ di te e di cosa fai attualmente in Nvidia?

    Sono il direttore del software per GPU Computing qui in Nvidia. Il mio obiettivo principale è costruire ed evolvere una piattaforma di elaborazione GPU completa, che includa software di sistema, strumenti per sviluppatori, linguaggio e istruzioni per il compilatore, librerie e applicazioni e algoritmi mirati. Con l’aiuto di un grande team, sviluppiamo sia il software per l’utente finale che stabiliamo la direzione per il GPU computing all’interno di Nvidia.

    Perché non partiamo dall’inizio? Immagino che il tuo interesse per la GPGPU non sia iniziato quando avevi 5 anni: quali sono stati gli eventi in corso a Princeton o Stanford che ti hanno davvero portato a scoprire un interesse per la GPGPU?

    Mi sono dilettato nel GPU computing ai miei tempi a Princeton, sperimentando la convezione termica e la simulazione dei fluidi su hardware grafico, che all’epoca era l’SGI O2. Anche se le cose erano così limitate, era difficile darne ragione.

    Ho iniziato seriamente a studiare il GPU Computing durante la mia ricerca di dottorato a Stanford. A Stanford, io, insieme ad altri membri della comunità di ricerca, mi sono reso conto che la naturale progressione della grafica programmabile era l’evoluzione della GPU in un processore più generico. Abbiamo scritto uno dei primi documenti SIGGRAPH sul ray tracing con hardware GPU di classe DX9 per dimostrare il punto. Ciò che era così motivante del lavoro era che questo processore di base, disponibile nei PC di tutti, seguiva un tasso di crescita delle prestazioni al cubo della legge di Moore, molto più veloce della CPU. Ciò ha sollevato la domanda: cosa potrebbe fare un PC se avesse più ordini di grandezza in più di potenza di calcolo rispetto a oggi? Un punto di svolta totale per le scienze computazionali, nonché per la visione artificiale, l’intelligenza artificiale, il data mining e la grafica.

    Qual è stato il tuo ruolo con Brook?

    Dopo aver lavorato sulla capacità di ray trace sulla GPU, il mio focus di ricerca a Stanford è passato alla comprensione del giusto modello di programmazione per il GPU Computing. A quel tempo, molti altri avevano dimostrato che la GPU era buona in una varietà di applicazioni diverse, ma non c’era un buon framework o modello di programmazione su come pensare alla GPU come dispositivo di calcolo. A quel tempo, era necessario un dottorato di ricerca in computer grafica per poter trasferire un’applicazione sulla GPU. Così ho iniziato il progetto Brook con l’obiettivo di definire un linguaggio di programmazione per il GPU Computing, che astraesse i grafici della GPU in concetti di programmazione più generali. Il concetto fondamentale di programmazione di Brook era il “flusso”, che era una raccolta di elementi di dati che richiedevano un lavoro simile. Brook alla fine è diventata la mia tesi di dottorato a Stanford. 

    Il tuo lavoro è iniziato con Merrimac, lo Stanford Streaming Super Computer. In che modo è diverso da qualcosa come una Tesla?

    I concetti del modello di programmazione di Brook erano applicabili a qualcosa di più delle semplici GPU. A Stanford abbiamo lavorato su due diverse implementazioni del modello di programmazione Brook: una per le GPU, l’altra per Merrimac che era un’architettura di ricerca sviluppata a Stanford. Molte delle idee sperimentate come parte di Merrimac hanno influenzato il modo in cui le GPU potrebbero essere migliorate per l’elaborazione generica. Va anche notato che Bill Dally, che era il principale investigatore di Merrimac a Stanford, è ora il capo scienziato di Nvidia. 

    CUDA aveva qualche radice in Gelato? Qual è stata la prima esplorazione accademica della GPGPU? E il primo utilizzo commercializzato?

    Ho iniziato CUDA mentre completavo la mia ricerca a Stanford. Nvidia ha già supportato molto la mia ricerca e ha visto chiaramente il potenziale per abilitare meglio il GPU computing dal lato hardware delle cose. Mi sono unito a Nvidia per avviare il progetto CUDA nel 2005. All’epoca eravamo solo io e un altro ingegnere. Ora abbiamo sviluppato il progetto nell’organizzazione che è oggi e oggi è un componente centrale delle GPU di Nvidia.

    www.gpgpu.org fornisce una bella storia del GPU computing, che risale al 2002.

    Attualmente, AMD spinge Brook come linguaggio di programmazione preferito per GPGPU, mentre Nvidia ha C con estensioni CUDA. Come confronteresti i punti di forza/di debolezza di entrambi?

    A partire da Nvidia, abbiamo avuto l’opportunità di rivedere alcune delle decisioni di progettazione fondamentali di Brook, che erano in gran parte basate su ciò che l’hardware di classe DX9 poteva ottenere. Una delle limitazioni principali erano i vincoli del modello di memoria, che richiedeva al programmatore di mappare il proprio algoritmo attorno a un modello di accesso alla memoria abbastanza limitato. Con le nostre estensioni C con CUDA, abbiamo allentato questi vincoli. Fondamentalmente, al programmatore veniva semplicemente fornito un enorme pool di thread e poteva accedere alla memoria in qualsiasi modo desiderasse. Questo miglioramento, così come pochi altri, ci ha permesso di implementare la semantica del linguaggio C completo sulla GPU.

    0 0 votes
    Rating post
    Subscribe
    Notificami
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x