Friday 24 November 2017

Movendo média em cuda no Brasil


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 biblioteca CUDA FFT livre (cuFFT) porque, como você deve saber, a convolução pode ser expressa como a multiplicação ponto-sábia dos dois sinais no domínio fourier (Este é o apropriadamente chamado Convolution Theorem, Que é executado com uma complexidade de O (n log (n))). Este tipo de abordagem irá minimizar o seu código CUDA kernel e correr muito, muito rapidamente, mesmo em uma GeForce 570 Particularmente, se você pode fazer todos os seus cálculos em única (float) de precisão. Eu gostaria de propor a manipular a equação de diferença acima como indicado abaixo e, em seguida, usando CUDA Thrust primitivas. DIFERENÇA EQUAÇÃO MANIPULAÇÃO - FORMA EXPLÍCITA DA DIFERENÇA EQUAÇÃO Por álgebra simples, você pode encontrar o seguinte: Em conformidade, a forma explícita é a seguinte: CUDA THRUST IMPLEMENTAÇÃO Você pode implementar a forma explícita acima pelas seguintes etapas: Inicializar uma entrada sequencia dinput Alfa, excepto para dinput0 1. Definir um vetor d1 overbetatothen igual a 1, 1beta, 1beta2, 1beta3. Multiply elementwise dinput by d1overbetatothen Executar um inclusivescan para obter a seqüência do yn betan Divida a seqüência acima por 1, 1beta, 1beta2, 1beta3. A abordagem acima pode ser recomendada para sistemas Linear Time-Varying (LTV). Para os sistemas Linear Time-Invariant (LTI), a abordagem FFT mencionada por Paul pode ser recomendada. Estou fornecendo um exemplo dessa abordagem usando CUDA Thrust e cuFFT na minha resposta ao filtro FIR no CUDA. Ao calcular uma média móvel em execução, colocando a média no período médio faz sentido No exemplo anterior, calculamos a média do primeiro 3 períodos de tempo 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 colocamos a primeira média móvel quando M4 Tecnicamente, a Média Móvel cairá em t 2,5, 3,5. Para evitar esse problema, suavizamos as MAs usando M 2. Assim, suavizamos os valores alisados ​​Se formos uma média de um número par de termos, precisamos suavizar os valores suavizados A tabela a seguir mostra os resultados usando M 4.Barracuda Networks, Inc. Sua média móvel de 50 dias em uma maneira Bullish. CUDA-US. 10 de janeiro de 2017 Desempenho do preço das ações em relação aos pares Considerando os pares, o desempenho relativo do último ano e do último mês sugere uma posição de liderança. CUDA-US 8216s preço das ações desempenho de 121,53 nos últimos 12 meses está acima da mediana de pares de 21,79. A tendência de 30 dias em seu desempenho de preço de ação de 3.84 é também acima da mediana do par de 0.68 que sugere que esta companhia é um performer principal relativo a seus pares. Definições do quadrante. Pular para saber mais Liderando, Fading, Lagging, Rising Screen para as empresas que usam o desempenho relativo do preço da ação Lucro Momentum Barracuda Networks, Inc. tem uma pontuação de ganhos de 51,26 e tem uma avaliação relativa de OVERVALUED. Ações com Momento de Lucro Alto são uma opção preferida para jogadas de momentum. Se eles estão subvalorizados, pode ser uma vantagem adicional e pode indicar impulso sustentado. Definições do quadrante. Para saber mais Sobrevalorizado, High Earnings Momentum, Undervalued, Momento de alta ganhos, UnderValued, Momento Baixo Lucro, Sobrevalorizado, Baixo Salário Momentum Screen para empresas usando Earnings Momentum ScoreNão sou um programador com quaisquer habilidades. Apenas alguém curioso sobre CUDA e assim que eu estou fazendo uma leitura pequena. Eu corri através de um exemplo de usar Thrust para fazer uma média móvel: O exemplo, como ele é, é executado e funciona principalmente corretamente. No entanto, é trivial no sentido de que ele só faz uma operação média móvel. Como eu diria 352 dessas operações de média móvel em paralelo, todos operando no mesmo fluxo de dados Em minha mente o fluxo do programa pode ser: Gerar o amplificador de dados enviá-lo para um núcleo CUDA. (Mesmo que o código existente, mas acho que os comprimentos de 1000 ou 10000 em vez de 30) Copie-o do núcleo CUDA em sua todos os outros 351 núcleos CUDA na minha GTX 465 Diga a cada núcleo CUDA o número de itens de dados para a média mais. (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 recebo que este código faz tudo acontecer, mas como faço para obter Thrust para fazer Muitos destes em paralelo Meu interesse aqui é sobre algo como dados de ações. Se eu estou olhando para os preços GOOG Id que colocar na GPU usando todos os núcleos e deixá-lo lá. Id então ser livre para fazer lotes de processamento sem carregar os dados mais e apenas a leitura de volta resultados de cada núcleo. NOTA: Talvez eu não queira usar o GOOG em todos os núcleos. Alguns núcleos podem ser GOOG, outros com algum outro símbolo, mas vou chegar lá mais tarde. Im apenas pensando que eu não quero os dados conservados em estoque na memória global se há espaço suficiente em cada núcleo. Eu suponho que isso é bastante simples para CUDA amp Thrust perguntou Sep 12 12 às 19:39 Minha compreensão é que você está interessado nas seguintes duas situações: Você tem uma longa seqüência de itens e você deseja calcular um certo número de médias, por Com média em diferentes números de itens, ou seja, usando diferentes comprimentos para a janela da média móvel. Isto é o que eu entendo de sua pergunta original. Você tem uma série de seqüê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 pela asm faz - você aceitou. Em vez de usar CUDA Thrust, acho que seria mais fácil escrever seu próprio kernel CUDA para fazer as operações acima. Abaixo, um exemplo totalmente trabalhado que funciona da mesma maneira que o código ArrayFire proposto por asm, cobrindo assim o caso 2. Modificá-lo para cobrir o caso 1 seria direto. Respondeu Nov 15 14 em 15:42 Sua resposta 2017 Stack Exchange, Inc

No comments:

Post a Comment