Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-09-2010, 09: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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
SSD NVMe Gen4 2TB in offerta: Acer Preda...
Perché i backup non bastano pi&ug...
Maserati, si concretizza la pista cinese...
Corea del Sud preoccupata: le cinesi YMT...
Se ne vendono 3000 al mese su Amazon: Sm...
Sedie gaming ergonomiche su Amazon: SONG...
Criptovalute, il Senato USA blocca il Cl...
Samsung Galaxy S26 FE a 635€ con coupon ...
Tesla porta il Cybercab in Cina, ma solo...
I modelli di OpenAI mentono e si nascond...
Rivoluzione in arrivo per il Game Pass? ...
Lefant V1 torna a 99€: scopa elettrica s...
L'FBI sequestra NightmareStresser: centi...
Copilot sparisce da Outlook classico dop...
DEEPOWER Fat Bike 20'': la e-bike con ba...
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: 10:12.


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