|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2006
Città: Livorno
Messaggi: 41
|
Porting della demo Nbody Cuda in c# .net e cuda managed.
Questa demo vuole essere un prova nel portare in .net "CUDA".
L'intenzione era quella di replicare in .net, directx managed, cuda managed, la demo Nbody di nvidia presente nel cuda sdk 3.0 fatta in OPENGL, cuda, c++. In più volelvo toccare con mano la diffrenza dello stesso calcolo via CPU multithreaded e via Gpu come vedete la differenza c'è e molta almeno in questo tipo di applicazione dove il calcolo puro è la parte predominante. Via cpu: intel core i7920 @ 3.8GHZ 8 core 8 thread 3000-4000 particelle per 20FPS Via Gpu: Gtx 280 lo stesso per 25000-30000 particelle.!!! Unico rammarico NON sono riuscito a replicare la grafica della demo di nvidia moolto superiore.... credo che usino un pixel shader e un vertex shader, molto semplici a dire il vero, però in opengl,io non sono riusito a replicare la stessa cosa in directx (sono un neofita della grafica directx) ho avuto i miei problemi con CUDA!!!!! e il multithreading.. ![]() ... ve ne sarò grato!!!! Date un sguardo al codice della demo di nvidia...per la parte grafica... qui sono riuscito solamente a creare un vertexbuffer non indexed di pointsprite con texture e alphablending, che tra parentesi (non essendo indexed) le texture si sovrapponogo e viene fuori una schifezza..... aspetto vostri consigli!!! Ringraziamenti: Un rigraziamento speciale va a RobyDX (http://www.vincedx.altervista.org/) e (http://www.notjustcode.it/dblog/) per i suoi tutorial in c# che mi hanno permesso di concentrarmi sulla parte di calcolo, prendendo la parte grafica praticamente già fatta. A nvidia per i sorgenti della demo Nbody (presenti nell'sdk) e sopratutto per la parte del codice cuda che ho preso cosi come è! ![]() e a Me per le ore di bestemmie per fare funzionare Cuda managed ovvio per mia inesperienza. In questa demo sto usando le directx managed 9.0 magari si potrebbe pensare di fare un porting alle 10/11 managed di Roby o anche le slimdx..o in xna. Magari risolvendo un po' la grafica.... ![]() Il file Cuda .cu è preso pari pari dalla demo di nvidia Nbody... NON l'ho fatto io!!! ![]() Il file .Cubin è il compilato del file .cu Cosa ho usato: - microsoft directx sdk febbraio 2010 - GASS.CUDA (http://www.hoopoe-cloud.com/) - Una Scheda Nvidia Cuda (http://www.nvidia.it/object/cuda_gpus_it.html) altrimenti solo CPU ![]() - Cuda sdk 3.0 (Opzionale) per vedere la demo originale Nbody. e per compilare il file cu. p.s per i sistemi x64 (avendo installato il cuda toolkit a 64 bit) il problema fondamentale è che cuda viene compilato a 64bit ma le directx vanno solo a 32.. così facendo otteniamo che o va cuda o va la grafica.. il file cubin che c'è qui è compilato a 32bit... e compilando la soluzione a 32bit tutto funziona ... per chi volesse usare le directx managed slimdx a 64 bit e volesse ricompilare il file .cu a 64bit basta aggiungere la riga qui sotto nell'evento post compilazione: nvcc nbody_kernel.cu --cubin --compiler-bindir="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -I="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include" questo se avete x64... per x32 non dovrebbero esserci problemi per compilare un file cu con evento post compilazione per vedere il comando rifarsi gli esempi allegati al GASS.CUDA. Il sorgente va compilato basta scaricare le gass.cuda aggiungere la reference e compilare.... basta la c# express edition (free) 2008 Mi pare tutto per adesso.. Aspetto vostri pareri e cosigli.... P.S Volevo allegare qui lo screenshot e i sorgenti ma la dimensione me lo impedisce. vi do il link alla condivisione di alice... http://file.webalice.it user: maxino pass: pippo
__________________
MB: Asus Rampage II Extreme CPU:Intel Corei7 920@3800 D0 - RAM: Team Group DDR3 1600 6Gb. in KIT 3PZ da 2GB. 8-8-8-24. VGA: NVIDIA TITAN. DISSI: AIR noctua nh-u12p. Lo devo cambiare! Ultima modifica di invi69 : 06-04-2010 alle 15:11. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:16.