Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-09-2010, 10:59   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[CUDA] Problema di risultati con la FFT

Ciao a tutti!

Sono giorni che sto impazzendo su questo problema. Devo fare il porting di un programma Matlab in CUDA. La situazione in CUDA è la seguente:

- Ho definito alcune variabili: Nblock = 1014, Ncell = 256
- Inizialmente lancio un kernel che restituisce una matrice di (Nblock-1)*Ncell elementi (in realtà è un array di cufftComplex di dimensione (Nblock-1)*Ncell). Tale array, chiamato snap_shot, ha gli stessi valori di quelli prodotti dal suo equivalente in Matlab (solo che in Matlab è proprio una matrice e non un array).
- Dopo questo kernel, ho bisogno di calcolare la FFT su questa matrice/vettore. Su Matlab viene lanciata la seguente istruzione:

Codice:
// temp_fft alla fine del calcolo sarà una matrice di 1024*256 elementi
temp_fft = fft(snap_shot, 2^nextpow2(Nblock), 1); % 2^nextpow2(Nblock)==1024
In CUDA invece ho lanciato le seguenti istruzioni:

Codice:
int main(int argc, char *argv[]) {
...
float2 *dAmb;
cudaMalloc((void **) &dAmb, nxtPow2Nblock*Ncell*sizeof(float2));
cufftComplex *dsnap_shot;
cudaMalloc((void **) &dsnap_shot, nxtPow2Nblock*Ncell*sizeof(cufftComplex));
cufftComplex *temp_fft;
cudaMalloc((void **) &temp_fft, nxtPow2Nblock*Ncell*sizeof(cufftComplex));
cufftHandle plan;
cufftPlan2d(&plan,Ncell,nxtPow2Nblock,CUFFT_C2C); // La eseguo con la dimensione x e y scambiata di posto, perché Matlab tratta le matrici in column-major order. Ma anche se metto x e y al loro posto il risultato è lo stesso
float2 *hAmb;
cudaMallocHost((void **) &hAmb, nxtPow2Nblock*Ncell*sizeof(float2));
...
ambfunc_kern<<<numBlocks,numThreads>>>(dhNc,dhNblock,Nblock,block_size,dsnap_shot);  // Alla fine del kernel dsnap_shot avrà i valori calcolati correttamente (in confronto a Matlab)
cudaThreadSynchronize();
cufftExecC2C(plan,dsnap_shot,temp_fft,CUFFT_FORWARD);  // Dopo la FFT, temp_fft avrà valori sballati (in confronto a Matlab) 
cudaThreadSynchronize();
fftshift_kern<<<numBlocks,numThreads>>>(temp_fft,nxtPow2Nblock*Ncell,nxtPow2Nblock,block_size,dAmb);    
cudaMemcpy(hAmb,dAmb,nxtPow2Nblock*Ncell*sizeof(float2),cudaMemcpyDeviceToHost);
...
}
Quindi il problema è che la FFT di CUDA mi restituisce risultati differenti da quella di Matlab. Non riesco a capire perché, mi pare di aver fatto tutto bene.

P.S.: Già ho cercato sui forum di nVidia e di Matlab e dicono che il problema è dovuto al fatto che CUDA tratta i vettori/matrici in row-major order mentre Matlab in column-major order e inoltre perché CUDA memorizza i numeri complessi in modo interfogliato (cioè attraverso un'Array of Struct), mentre Matlab memorizza la parte reale e immaginaria separatamente (cioè attraverso una Struct of Array). Però nel mio caso non capisco cosa altro debba fare per far combaciare i risultati.
__________________
Intel Core 2 Duo Q6600 G0, 4GB DDR2-800 A-Data, ABIT AB9, XFX GeForce 8800 GTS 320MB, Sound Blaster X-Fi Extreme Music, Seagate 320GB SATA2, Maxtor 80GB ATA-133, Western Digital 1TB SATA2

Ho concluso affari positivamente con: scandalf, Sinclair63, mstella, checcodag, wilson
Manugal è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Black Friday HONOR, prezzi giù fi...
AliExpress sfida Amazon sui prezzi: e-bi...
Gemini sotto accusa in Ungheria: per l'a...
Windows 11 può girare sulla NPU invece d...
MediaWorld diventa cinese: l'UE dice s&i...
Akamai potenzia il proprio cloud con due...
Steam, Valve cambia le regole: le revisi...
Canva licenzia (anche) per colpa dell'IA...
Axerta: l’IA traina la crescita delle te...
Galaxy A38, la batteria cresce ma il pre...
Notifica su Facebook: 'Effettuerai la mi...
Xbox pronta a dire addio allo studio di ...
Meta stacca la spina: fine del supporto ...
Scambio file senza limiti: Google porta ...
Taiwan sbarca a EICMA 2026: maxi scooter...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v