For en annen tilnærming, kan du avkorte det eksponentielle glidende gjennomsnittsvinduet og deretter beregne det filtrerte signalet ditt ved å gjøre en konvolusjon mellom signalet ditt og vinduet eksponensielt. Konvolusjonen kan beregnes ved å bruke det frie CUDA FFT-biblioteket (cuFFT) fordi, som du kanskje vet, kan konvolusjonen uttrykkes som den punktvise multiplikasjonen av de to signalene i fourier-domenet (Dette er det passende navnet Konvolutionsteorem, som løper med en kompleksitet av O (n log (n))). Denne typen tilnærming vil minimere CUDA kjernekoden og kjøre veldig veldig raskt, selv på en GeForce 570 Spesielt så hvis du kan gjøre alle dine beregninger i enkel (flyt) presisjon. besvart 30 april 14 kl 17:04 Jeg vil foreslå å manipulere ovennevnte forskjellsligning som angitt nedenfor og deretter bruke CUDA Thrust Primitives. FORSKELLIG EQUATION MANIPULATION - EXPLICIT FORM OF THE DIFFERENCE Equation Med enkel algebra kan du finne følgende: Følgelig er den eksplisitte formen følgende: CUDA THRUST IMPLEMENTERING Du kan implementere eksplisitt skjema ovenfor ved å følge disse trinnene: Initialiser en inngangssekvens dinput til alfa bortsett fra dinput0 1. Definer en vektor d1overbetatothen lik 1, 1beta, 1beta2, 1beta3. Multiply elementwise dinput av d1overbetatothen Utfør en inklusivskanning for å oppnå sekvensen av yn-betan Del den ovennevnte sekvensen med 1, 1beta, 1beta2, 1beta3. Ovennevnte tilnærming kan anbefales for lineære tidsvarierende (LTV) systemer. For Linear Time-Invariant (LTI) systemer, kan FFT-tilnærmingen nevnt av Paul anbefales. Jeg gir et eksempel på denne tilnærmingen ved å bruke CUDA Thrust og cuFFT i svaret mitt på FIR-filteret i CUDA. Når du beregner et løpende bevegelige gjennomsnitt, er gjennomsnittet i mellomtiden fornuftig. I det forrige eksempelet beregnet vi gjennomsnittet av det første 3 tidsperioder og plassert den ved siden av periode 3. Vi kunne ha plassert gjennomsnittet midt i tidsintervallet på tre perioder, det vil si ved siden av periode 2. Dette fungerer bra med ulike tidsperioder, men ikke så bra for selv tidsperioder. Så hvor skulle vi plassere det første glidende gjennomsnittet når M 4 Teknisk sett ville det bevegelige gjennomsnittet falle på t 2,5, 3,5. For å unngå dette problemet, slipper vi MAs ved hjelp av M 2. Dermed glirer vi de jevne verdiene. Hvis vi gjennomsnittlig et jevnt antall vilkår, må vi glatte de jevne verdiene. Følgende tabell viser resultatene ved hjelp av M 4.Barracuda Networks, Inc. brudd dets 50 dagers glidende gjennomsnitt i en Bullish Manner. CUDA-USA. 10. januar 2017 Aksjekursutvikling i forhold til jevnaldrende Med tanke på jevnaldrende, har relativ utmerkelse over det siste året og den siste måneden vært en ledende posisjon. CUDA-US 8216s aksjekursutbytte på 121,53 i løpet av de siste 12 månedene er over peer-medianen på 21,79. Den 30-dagers trenden i aksjeprisutviklingen på 3,84 ligger også over peermedianen på 0,68, noe som tyder på at dette selskapet er en ledende aktør i forhold til sine jevnaldrende. Definisjoner av kvadrantetikett. Hover for å vite mer Ledende, Fading, Lagging, Stigende skjerm for selskaper som bruker relativ kursutvikling Earnings Momentum Barracuda Networks, Inc. har en inntjeningspoengsum på 51,26 og har en relativ verdivurdering av OVERVALUED. Aksjer med høyt fortjeneste Momentum er et foretrukket alternativ for momentumspill. Hvis de er undervurderte, kan det være en ytterligere fordel og kan tyde på vedvarende momentum. Definisjoner av kvadrantetikett. Hold øynene for å vite mer Overvurdert, høyt fortjeneste Momentum, undervurdert, høyt fortjeneste Momentum, undervurdert, lavt fortjeneste Momentum, Overvurdert, lavt fortjeneste Momentum-skjerm for selskaper som bruker fortjeneste Momentum ScoreIm ikke en programmerer med noen evner. Bare noen nysgjerrige på CUDA og så jeg gjør litt lesing. Jeg sprang over et eksempel på å bruke Thrust for å gjøre et glidende gjennomsnitt: Eksemplet, som det er, kjører og fungerer mest mulig. Men det er trivielt i den forstand at det bare gjør en glidende gjennomsnittlig operasjon. Hvordan ville jeg si 352 av disse bevegelige gjennomsnittlige operasjonene i parallell, alle som opererer på samme datastrøm I mitt sinn kan programflyten være: Generer dataramperen, send den til en CUDA-kjerne. (Samme som eksisterende kode, men tenk lengder på 1000 eller 10000 i stedet for 30) Kopier den fra CUDA-kjernen til alle de andre 351 CUDA-kjernene i min GTX 465 Fortell hver CUDA-kjerne hvilket antall dataposter som skal gjennomsnittlig over. (4. 5. 6. 352. 353. 354) Fortell enheten å kjøre gjennomsnittet i hver kjerne i parallell. Les tilbake resultatene fra hver kjerne. Jeg får at denne koden gjør alt skje, men hvordan får jeg Thrust å gjøre mange av disse parallelt Min interesse handler om noe som lagerdata. Hvis jeg ser på GOOG-priser, legger Id det i GPUen med alle kjerner og la det være der. Id er da fri til å gjøre mye behandling uten å laste dataene lenger og bare lese resultatene fra hver kjerne. MERK: Jeg vil kanskje ikke bruke GOOG i alle kjerner. Noen kjerner kan være GOOG, andre med et annet symbol, men jeg kommer senere. Jeg tenker bare at jeg ikke vil ha lagerdataene i det globale minnet hvis det er nok plass i hver kjerne. Jeg antar at dette er ganske greit for CUDA amp Thrust spurte 12 september 12 kl 19:39. Min forståelse er at du er interessert i følgende to situasjoner: Du har en lang sekvens av elementer og du vil beregne et visst antall gjennomsnitt, etter gjennomsnitt på ulike antall elementer, dvs. å bruke forskjellige lengder for det bevegelige gjennomsnittsvinduet. Dette er hva jeg forstår fra ditt opprinnelige spørsmål. Du har en serie av sekvenser, lagret fortløpende i minnet, og du vil gjennomsnittlig dem parallelt med et fast gjennomsnittlig vindu med størrelse 2 RADIUS 1. Dette er hva ArrayFire-koden foreslått av ASM gjør - du har akseptert den. I stedet for å bruke CUDA Thrust, tror jeg det ville være lettere å skrive din egen CUDA-kjernen for å gjøre de ovennevnte operasjonene. Nedenfor er et fullt utarbeidet eksempel som fungerer på samme måte som ArrayFire-koden foreslått av ASM, og dekker dermed tilfelle 2. Endring av det for å dekke tilfelle 1, ville være rettferdig. besvart 15 nov 14 kl 15:42 Ditt svar 2017 Stack Exchange, Inc
No comments:
Post a Comment