2009-08-08 13 views
48

Recentemente ho letto molto sul software (principalmente scientifico/matematico e relativo alla crittografia) che sposta parte del loro calcolo sulla GPU che causa un 100-1000 (!) Piega aumento della velocità per le operazioni supportate.C#: Esegui operazioni su GPU, non CPU (Calcola Pi)

C'è una libreria, API o altro modo di eseguire qualcosa sulla GPU tramite C#? Sto pensando al semplice calcolo Pi. Ho una GeForce 8800 GTX se questo è rilevante (preferirei comunque una soluzione indipendente dalle carte).

+1

Non penso che sia necessaria la GPU per un "semplice calcolo Pi" a meno che non lo si faccia migliaia di volte al secondo ... –

+18

Non si tratta di "averne bisogno". L'ho appena suggerito come esempio di prova di concetto. – Alex

+0

Ah, capisco. Errore mio. +1 poi. –

risposta

19

È una tecnologia molto nuova, ma è possibile esaminare CUDA. Poiché la tua domanda è codificata con C#, ecco un .Net wrapper.

Come bonus, sembra che il tuo 8800 GTX supporti CUDA.

+1

Il tuo link per il wrapper è morto . –

+0

@Alizter - Grazie.Ho fatto una ricerca e ho inserito un nuovo URL, se la gente lo sta cercando. –

+0

Utilizzare la GPU Alea da www.quantalea.com. È un compilatore completo di .NET to CUDA, multipiattaforma con un ottimo supporto per sviluppatori per il debugging e la profilazione. – Daniel

8

Si potrebbe desiderare di guardare this question

Probabilmente siete alla ricerca di Accelerator, ma se siete interessati nello sviluppo del gioco, in generale, io ti suggerisco di dare un'occhiata a XNA

+0

Non avevo sentito parlare di questo - interessante! Sono preoccupato che sia ancora un progetto di ricerca. È pronto per le applicazioni commerciali? –

+0

Per essere onesti, non l'ho provato e non so quanto sia stabile. Faccio alcune programmazioni grafiche e le ho inserite nei miei segnalibri per riferimenti futuri, e mi è sembrato più semplice avvicinarmi rispetto a CUDA per questo problema. – Tchami

+0

Ho una scheda ATI quindi forse darò una prova ad Accelerator. –

4

CUDA.NET dovrebbe essere esattamente quello che stai cercando, e sembra supportare la tua scheda grafica specifica.

3

È possibile accedere alle ultime API Direct3D da .NET utilizzando Windows API Code Pack. Direct3D 11 viene fornito con Computers Shaders. Questi sono approssimativamente paragonabili a CUDA, ma funzionano anche su GPU non NVIDIA.

Nota che Managed DirectX e XNA sono limitati al set di caratteristiche Direct3D 9, che è alquanto difficile da utilizzare per GPGPU.

2

C'è un insieme di collegamenti .Net per l'API CUDA di Nvidia, si chiama CUDA.net. È possibile fare riferimento allo reference guide per esaminare alcuni esempi di codice C#.

Il modo preferito per accedere al tuo co-Processore (GPU) sarebbe utilizzare OpenCL in modo che il tuo codice sarebbe portatile con schede ATI, ma credo che potrebbe esserci ulteriore codifica richiesta e non sono sicuro di quanto supporto OpenCL ha per la piattaforma .Net.

Se si desidera utilizzare C++, here's a quick overview su come ottenere codice di esempio compilazione con Visual Studio.

15

Un'altra opzione che non è stata menzionata per il calcolo GPU da C# è Brahma.

Brahma fornisce un'astrazione basata su LINQ per i calcoli GPU - è fondamentalmente da LINQ a GPU. Funziona su OpenGL e DirectX senza librerie aggiuntive (ma richiede SM3). Alcuni dei campioni sono abbastanza sorprendenti.

Problemi correlati