Saturday, 29 December 2018

Mudança média cuda


Para outra abordagem, você pode truncar a janela de média móvel exponencial e, em seguida, calcular seu sinal filtrado, fazendo uma convolução entre o seu sinal ea janela exponencial A convolução pode ser calculada usando a livre CUDA FFT biblioteca cuFFT porque, como você deve saber, o A convolução pode ser expressa como a multiplicação ponto-sábia dos dois sinais no domínio fourier Este é o nome apropriadamente chamado Teorema de Convolução, que roda com uma complexidade de O n log n Este tipo de abordagem irá minimizar o código CUDA kernel e correr muito Rapidamente, mesmo em uma GeForce 570 Particularmente, se você puder fazer todos os seus cálculos em precisão de flutuação simples. Respondido Apr 30 14 at 17 04.I propõe a manipular a equação de diferença acima como indicado abaixo e, em seguida, usando CUDA Thrust primitives. DIFFERENCE MANIPULAÇÃO DA EQUAÇÃO - FORMA EXPLÍCITA DA EQUAÇÃO DA DIFERENÇA. Com álgebra simples, você pode encontrar o seguinte. Em conseqüência, a forma explícita é a seguinte. ENTATION. You pode implementar a forma explícita acima pelo seguinte steps. Initialize uma entrada dinput de sequência para alfa, exceto para dinput 0 1.Define um vetor d1overbetatothen igual a 1, 1 beta, 1 beta 2, 1 beta 3.Multiply elementwise dinput por D1overbetatothen. Perform um inclusivescan para obter a seqüência do yn beta n. Divide a seqüência acima por 1, 1 beta, 1 beta 2, 1 beta 3. A abordagem acima pode ser recomendada para Linear Time-Varying sistemas LTV Para Linear Time - Invariant LTI sistemas, a abordagem FFT mencionados por Paul pode ser recomendado Eu estou fornecendo um exemplo dessa abordagem usando CUDA Thrust e cuFFT na minha resposta para FIR filtro em CUDA. I m não um programador com qualquer capacidade Apenas alguém curioso sobre CUDA e Então eu estou fazendo uma pequena leitura eu corri através de um exemplo de usar Thrust para fazer uma média móvel. O exemplo, como é, funciona e funciona principalmente corretamente No entanto, é trivial no sentido de que ele só faz uma operação de média móvel. Como eu diria 352 do Se movendo operações médias em paralelo, todos operando no mesmo fluxo de dados Na minha mente o fluxo do programa pode ser. Generar os dados enviá-lo para um core CUDA Mesmo como o código existente, mas acho que os comprimentos de 1000 ou 10000 em vez de 30. Copiar de O núcleo CUDA está em todos os outros 351 núcleos CUDA na minha GTX 465.Tell cada núcleo CUDA que número de itens de dados para a média de mais de 4 5 6 352 353 354.Diga ao dispositivo para executar a média em cada núcleo em Paralelo. Leia os resultados de cada núcleo. Eu percebo que este código. makes tudo acontecer, mas como eu obter Thrust para fazer muitos desses em paralelo. Meu interesse aqui é sobre algo como dados de ações Se eu estou olhando para GOOG Os preços eu d que colocar na GPU usando todos os núcleos e deixá-lo lá eu d então ser livre para fazer um monte de processamento sem carregar os dados mais e apenas ler os resultados de volta de cada núcleo NOTA eu não pode querer usar GOOG em todos os núcleos Alguns Núcleos podem ser GOOG, outros com algum outro símbolo, mas eu vou chegar lá depois eu só estou pensando G Eu não quero os dados de ações em memória global se houver espaço suficiente em cada núcleo. Suponho que isso é bastante simples para CUDA Thrust. asked 12 de setembro 12 às 19 39.Minha compreensão é que você está interessado nas seguintes duas situações . Você tem uma seqüência longa de itens e você quer calcular um certo número de médias, pela média em diferentes números de itens, ou seja, usando comprimentos diferentes para a janela média móvel Isso é o que eu entendo a partir de sua pergunta original. Você tem uma série De sequências, armazenadas consecutivamente na memória, e você quer medi-las em paralelo com uma janela de média fixa de tamanho 2 RADIUS 1 Isto é o que o código ArrayFire proposto por asm faz - você aceitou it. Instead de usar CUDA Thrust, eu acho Seria mais fácil escrever o seu próprio kernel CUDA para fazer as operações acima Abaixo, um exemplo totalmente trabalhado que opera da mesma maneira que o código ArrayFire proposto por asm, abrangendo assim o caso 2 Modificá-lo para cobrir o caso 1 seria straightfo Rward. answered Nov 15 14 at 15 42.Your Answer.2017 Stack Exchange, Inc. When computando uma corrida média móvel, colocando a média no período de tempo médio faz sentido. No exemplo anterior, calculamos a média dos primeiros 3 vezes Períodos e colocá-lo próximo ao período 3 Poderíamos ter colocado a média no meio do intervalo de tempo de três períodos, ou seja, próximo ao período 2 Isso funciona bem com períodos de tempo ímpares, mas não tão bom para mesmo períodos de tempo Então, onde Colocaremos a primeira média móvel quando M 4.Técnica, a Média Móvel cairá em t 2 5, 3 5.Para evitar esse problema, suavizaremos as MAs usando M 2 Assim, suavizamos os valores suavizados. Se nós medimos um valor igual Número de termos, precisamos suavizar os valores suavizados. A tabela a seguir mostra os resultados usando M 4.

No comments:

Post a Comment