Analisi

CUDA, il nuovo linguaggio di programmazione per le GPU Nvidia, promette grandi risultati e mostra le schede video sotto una nuova luce. Cerchiamo di capire un po' di più cosa ci riserva CUDA.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Analisi

Non abbiamo resistito nel procedere oltre e provare questo programma con una 8800 GTX, che offre una potenza tre volte superiore alla 8600, indipendentemente dalla dimensione dei blocchi. Potreste pensare che i risultati siano quattro volte più veloci, basandosi sulle rispettive architetture: 128 ALU contro le 32 e una frequenza di clock superiore (1.35 GHz contro i 950 MHz), ma in pratica non è così. Ci sono tuttavia alcuni vantaggi da considerare;

  • Gli accessi alla memoria sono migliorati dalla cache texutre;
  • Disponiamo di un wrapping mode che non permette di gestire i bordi dell'immagine, diversamente dalla CPU

La 8600 dispone di 16 unità texture, mentre la 8800 GTS di 32. Quindi esiste solo un rapporto 2:1 tra le due architetture. Aggiungete la differenza di frequenze nel rapporto e otteniamo (32 x 0.575) / (16 x 0.475) = 2.4. Questa teoria ha anche il vantaggio di spiegare perché la dimensione dei blocchi non fa molta differenza sul G80, poiché le ALU sono limitate dalle unità texture.

Oltre ai risultati incoraggianti, il nostro primo tentativo con CUDA è andato molto bene considerando le condizioni sfavorevoli che abbiamo scelto. Sviluppando su un notebook Vista siamo stati forzati a usare l'SDK CUDA 2.0, ancora in fase beta, con i driver 174.55, anche questi in beta. Nonostante tutto, non abbiamo avuto risultati spiacevoli, solo un po' di paura quando, al primo avvio, il programma, ancora molto buggato, ha provato a indirizzare memoria oltre lo spazio allocato.

Il monitor ha iniziato a sfarfallare freneticamente, poi si è spento, fino a che Vista non ha avviato il servizio di ripristino dei driver.

Infine, dobbiamo muovere una piccola critica a Nvidia: in tutta la documentazione disponibile di CUDA, è una vergogna non trovare almeno un tutorial che spieghi, passo per passo, come configurare l'ambiente di sviluppo con Visual Studio. Non è un gran problema poiché l'SDK è pieno di programmi di esempio che possono essere valutati, ma per i principianti un tutorial sarebbe stato molto di aiuto.