Moving Media Cuda


Per un altro approccio, è possibile troncare la finestra di media mobile esponenziale e quindi calcolare il segnale filtrato facendo una convoluzione tra il segnale e il finestrato esponenziale La convoluzione può essere calcolata utilizzando la libera CUDA FFT cuFFT biblioteca perché, come forse sapete, la convoluzione può essere espresso come la moltiplicazione punto-saggio dei due segnali nel dominio di Fourier Questa è la fina convoluzione Teorema, che corre con una complessità di log O n n Questo tipo di approccio ridurrà al minimo il codice del kernel CUDA e correre molto molto rapidamente, anche in una GeForce 570 in modo particolare se si può fare tutti i calcoli in singola galleggiante precision. answered 30 14 apr alle 17 04.I avrebbe proposto di manipolare l'equazione alle differenze sopra come indicato di seguito e quindi utilizzando CUDA spinta primitives. DIFFERENCE EQUAZIONE MANIPOLAZIONE - forma esplicita dELLA DIFFERENZA EQUATION. By semplice algebra, è possibile trovare il following. Accordingly, la forma esplicita è la spinta following. CUDA IMPLEMENTATION. You può attuare la forma esplicita di cui sopra dal seguente steps. Initialize un DINPUT sequenza di input per alpha tranne che per DINPUT 0 1.Define un d1overbetatothen vettore pari a 1, 1 beta, 1 beta 2, 1 beta 3.Multiply elementwise DINPUT da d1overbetatothen. Perform un inclusivescan per ottenere la sequenza del YN beta n. Divide la sequenza sopra da 1, 1 beta, 1 beta 2, 1 beta 3. sopra approccio può essere raccomandato per sistemi lineari variabili nel tempo LTV per i sistemi LTI lineare tempo-invarianti, l'approccio FFT di cui parla Paolo può essere raccomandato io sto fornendo un esempio di questo approccio utilizzando CUDA di spinta e cuFFT nella mia risposta al filtro FIR in CUDA. I non sono un programmatore con le abilità Solo qualcuno curiosi su CUDA e così ho sto facendo un po 'di lettura mi sono imbattuto in un esempio di utilizzo di spinta per fare un movimento average. The esempio, così com'è, piste e per lo più funziona correttamente Tuttavia s banale, nel senso che solo fa una media mobile operation. How lo farei dire 352 di queste operazioni di movimentazione media in parallelo, tutti operanti sulla stessa flusso di dati nella mia mente il flusso del programma potrebbe be. Generate i dati inviarlo a un core CUDA come il codice esistente, ma pensano lunghezze di 1000 o 10000 invece di 30.Copy dal nucleo CUDA s per tutti i gli altri 351 core CUDA nella mia GTX 465.Tell ogni core CUDA quale numero di elementi di dati di media oltre 4 5 6 352 353 354.Tell il dispositivo per eseguire la media in ciascun core in parallel. Read indietro i risultati di ciascun core. I ottenere che questo code. makes tutto accada, ma come ottengo spinta a fare molti di questi nell'interesse parallel. My qui è circa qualcosa come dati di stock Se io sto guardando a prezzi GOOG I d mettere che nella GPU usando tutti i core e lasciarlo lì i d poi essere libero di fare un sacco di trattamento senza caricare i dati più e solo la lettura indietro i risultati di ogni core NOTA potrei non voler utilizzare GOOG in tutti i core alcuni nuclei potrebbero essere GOOG, altri con qualche altro simbolo, ma i ll ci arrivo dopo mi sto solo pensando non voglio i dati di stock di memoria globale, se ci s abbastanza spazio in ogni core. I assumere questo è abbastanza semplice per CUDA Thrust. asked 12 settembre 12 al 19 39.My comprensione è che siete interessati nelle seguenti due situations. You avere una lunga sequenza di elementi e si desidera calcolare un certo numero di medie, facendo la media su un diverso numero di elementi, vale a dire utilizzando diverse lunghezze per la finestra media mobile Questo è quello che ho capito da l'originale question. You hanno una serie di sequenze, immagazzinato consecutivamente nella memoria, e si desidera fare la media in parallelo con una finestra in media fissa di dimensioni 2 RADIUS 1 Questo è ciò che il codice ArrayFire proposto da ASM fa - è stato accettato. Invece di usare CUDA spinta, penso che sarebbe stato più facile scrivere il proprio kernel CUDA di fare le operazioni di cui sopra Qui di seguito, un lavorato completamente esempio, che opera nello stesso modo del codice ArrayFire proposto da ASM, coprendo così il caso 2 modificandolo a caso della copertura di 1 sarebbe straightforward. answered 15 14 novembre alle 15 42.Your Answer.2017 Stack Exchange, Inc. When calcolo di una media in esecuzione in movimento, ponendo la media nel periodo di tempo di mezzo rende sense. In nell'esempio precedente abbiamo calcolato la media delle prime 3 periodi di tempo e lo mise accanto al periodo di 3 avremmo potuto messo la media al centro dell'intervallo di tempo di tre periodi, cioè, accanto al periodo di 2 Questo funziona bene con i periodi di tempo dispari, ma non così buono per anche i periodi di tempo così dove ci sarebbe posto la prima media mobile quando M 4.Technically, la media mobile sarebbe caduta in t 2 5, 3 5.To evitare questo problema si liscia il MA s utilizzando M 2 Così si liscia i valori livellati. Se calcoliamo la media un numero di termini, dobbiamo spianare la valori. le tabella seguente levigata mostra i risultati utilizzando M 4.

Comments

Popular Posts