Skip to main content

Movendo Média Em Cuda


O que é CUDA Enroll hoje Introdução à Programação Paralela Um curso aberto e on-line da Udacity Instrutores: Dr. John Owens, UC Davis e Dr. David Luebke, NVIDIA CUDA reg é uma plataforma de computação paralela e modelo de programação inventado pela NVIDIA. Permite aumentos dramáticos no desempenho de computação aproveitando a potência da unidade de processamento gráfico (GPU). Com milhões de GPUs CUDA-enabled até agora, os desenvolvedores de software, cientistas e pesquisadores estão encontrando amplos usos para computação GPU com CUDA. Aqui estão alguns exemplos: Identificar placa escondida nas artérias. Os ataques cardíacos são a principal causa de morte em todo o mundo. Harvard Engineering, Harvard Medical School e Brigham Womens Hospital se uniram para usar GPUs para simular o fluxo sanguíneo e identificar a placa arterial escondida sem técnicas invasivas de imagem ou cirurgia exploratória. Analisar o fluxo de tráfego aéreo. O Sistema Nacional de Espaço Aéreo gerencia a coordenação nacional do fluxo de tráfego aéreo. Modelos de computador ajudam a identificar novas maneiras de aliviar o congestionamento e manter o tráfego do avião se movendo eficientemente. Usando a potência computacional das GPUs, uma equipe da NASA obteve um grande ganho de desempenho, reduzindo o tempo de análise de dez minutos para três segundos. Visualize moléculas. Uma simulação molecular chamada NAMD (nanoescala molecular dinâmica) obtém um grande impulso de desempenho com GPUs. A aceleração é resultado da arquitetura paralela das GPUs, que permite que os desenvolvedores do NAMD transportem porções computacionais intensivas do aplicativo para a GPU usando o CUDA Toolkit. Background GPU Computing: The Revolution Você está diante de imperativos: Melhore o desempenho. Resolver um problema mais rapidamente. O processamento paralelo seria mais rápido, mas a curva de aprendizado é íngreme não é mais. Com CUDA, você pode enviar código C, C e Fortran direto para GPU, sem linguagem de montagem necessária. Desenvolvedores em empresas como a Adobe, ANSYS, Autodesk, MathWorks e Wolfram Research estão acordando que gigante dormindo a GPU - para fazer fins gerais de computação científica e de engenharia em uma variedade de plataformas. Usando linguagens de alto nível, os aplicativos acelerados por GPU executam a parte seqüencial de sua carga de trabalho na CPU, otimizada para o desempenho de um único thread, enquanto aceleram o processamento paralelo na GPU. Isso é chamado de computação GPU. A computação GPU é possível porque a GPU de hoje faz muito mais do que renderizar gráficos: Sizzles com um teraflop de desempenho de ponto flutuante e crunches tarefas de aplicação projetado para qualquer coisa de finanças para medicina. A CUDA é amplamente implantada através de milhares de aplicativos e trabalhos de pesquisa publicados e apoiada por uma base instalada de mais de 375 milhões de GPUs CUDA em notebooks, estações de trabalho, clusters de computação e supercomputadores. Visite a Zona CUDA para obter exemplos de aplicações em diversos mercados verticais e desperte seu gigante GPU. História da Computação GPU As primeiras GPUs foram projetadas como aceleradores gráficos, suportando apenas tubulações específicas de função fixa. Começando no final dos anos 90, o hardware tornou-se cada vez mais programável, culminando com o primeiro GPU da NVIDIA em 1999. Menos de um ano após a NVIDIA cunhar o termo GPU, os artistas e desenvolvedores de jogos não eram os únicos a fazer trabalho inovador com a tecnologia: Aproveitando seu excelente desempenho em ponto flutuante. O GPU de General Purpose (GPGPU) movimento tinha amanheceu. Mas GPGPU estava longe de ser fácil na época, mesmo para aqueles que sabiam linguagens de programação gráfica como OpenGL. Os desenvolvedores tinham de mapear cálculos científicos em problemas que poderiam ser representados por triângulos e polígonos. GPGPU estava praticamente fora dos limites para aqueles que não haviam memorizado as últimas APIs gráficas até que um grupo de pesquisadores da Universidade de Stanford decidiu re-imaginar a GPU como um processador de streaming. Em 2003, uma equipe de pesquisadores liderada por Ian Buck revelou Brook, o primeiro modelo de programação amplamente adotado para estender C com construções de dados paralelos. Usando conceitos como fluxos, kernels e operadores de redução, o compilador Brook eo sistema runtime expuseram a GPU como um processador de propósito geral em uma linguagem de alto nível. Mais importante ainda, os programas do Brook não eram apenas mais fáceis de escrever do que o código GPU manualmente ajustado, eram sete vezes mais rápidos do que o código existente semelhante. A NVIDIA sabia que o hardware incrivelmente rápido precisava ser acoplado a ferramentas intuitivas de software e hardware e convidou Ian Buck para se juntar à empresa e começar a desenvolver uma solução para executar C na GPU. Juntando o software e o hardware, a NVIDIA revelou a CUDA em 2006, a primeira solução do mundo para computação geral em GPUs. Ferramentas e Treinamento Hoje, o ecossistema CUDA está crescendo rapidamente à medida que mais e mais empresas fornecem ferramentas, serviços e soluções de classe mundial. Se você quiser escrever seu próprio código, a maneira mais fácil de aproveitar o desempenho das GPUs é com o CUDA Toolkit. Que fornece um ambiente de desenvolvimento abrangente para desenvolvedores C e C. O CUDA Toolkit inclui um compilador, bibliotecas matemáticas e ferramentas para depuração e otimização do desempenho de seus aplicativos. Você também encontrará exemplos de código, guias de programação, manuais de usuário, referências de API e outras documentações para ajudá-lo a começar. A NVIDIA fornece tudo isso de forma gratuita, incluindo NVIDIA Parallel Nsight para Visual Studio, o primeiro ambiente de desenvolvimento de indústrias para aplicações paralelas que usam GPUs e CPUs. Aprender a usar CUDA é conveniente, com treinamento on-line abrangente disponível, bem como outros recursos, como webinars e livros. Mais de 400 universidades e faculdades ensinam programação CUDA, incluindo dezenas de CUDA Centros de Excelência e Centros de Pesquisa e Treinamento CUDA. Para desenvolvedoresNão sou um programador com nenhuma habilidade. 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. 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 para FIR filtro em CUDA.

Comments

Popular posts from this blog

Forex Oco Estratégia

O que é um One-Cancels-the-Other Order - OCO Um-cancela-o-outro pedido (OCO) é um par de ordens estipulando que se uma ordem é executada, então o Outra ordem é automaticamente cancelada. Uma ordem de cancelamento único (OCO) combina uma ordem de parada com uma ordem de limite em uma plataforma de negociação automatizada. Quando o nível de parada ou limite é atingido e a ordem executada, a outra ordem será automaticamente cancelada. Os traders experientes usam ordens do OCO para mitigar o risco. Por exemplo, suponha que um investidor possua 1.000 ações de uma ação volátil que está negociando em 10. O investidor espera que este estoque para o comércio em uma ampla gama no curto prazo. E tem um alvo de 13 sobre ele para a mitigação de risco, ele gostaria de perder não mais do que 2 no estoque. O investidor pode, portanto, colocar uma ordem OCO, que consistiria em uma ordem stop-loss para vender 1.000 ações em 8, e uma ordem limite simultânea para vender 1.000 ações em 13, o que ocorrer pr...

Forex Plastico

FOREX é sinônimo de panelas de PVC espumado branco desde 30 anos. A família de produtos FOREX oferece uma gran seleção de materiais de paneles de ligas e de grande qualidade para aplicações no interior eo exterior com uma grande oferta própria. A quotcustomizacinquot tambin es posible: Colores especiais, embalagens especficas e incluso a produccin segn as especificaçÃμes do cliente em componentes da linha de FOREX. Panelas de PVC de alta qualidade feitas na suiça Propiedades superficiais excepcionais A colaboração com distribuidores lderes a garantia dos produtos FOREX em toda Europa Qualidade de Mxima dos produtos e manutenção dos estndares da qualidade Processador mecânico simples com ferramentas estandar do tratamento da madeira e do plástico Os produtos FOREX carecem os componentes perigosos e compram as exigências das diretivas RoHS WEEE e os produtos químicos do produto Químicos da UE (REACH) Gama do produto FOREXclassic Da categoria superior da família de produtos FOREX que tem...

Hawkeye Trading System Download

HawkeyeTraders Review Visite o site Eu deixei minha opinião de Hawkeye no limbo por tanto tempo desde que eu comentei no ano passado e, ao fazer isso, eu meio que sinto que tenho feito um desserviço aos potenciais compradores de produtos Hawkeye. Eu também sinto fortemente que eu paguei um desrespeito a Nigel Hawkes, o CEO de Hawkeye. Então eu finalmente decidi tomar um tempo para escrever um comentário honesto sobre Hawkeye, embora escrever em Inglês é muito difícil para mim, como eu disse antes. Quanto aos sistemas de negociação e produtos fornecidos pela Hawkeye, eu acho que eles são ferramentas impressionantes que ajudam os comerciantes consistentemente extrair ganhos de mercados. As ferramentas de Hawkeye são as mais robustas em prazos de negociação mais elevados, de preferência pelo menos mais de 120M cartas e Nigel Hawkes altamente recomenda comerciantes exatamente fazendo isso. (Na verdade, ele recomenda fortemente 360M ou mais.) Isso não significa que em todas as ferramentas H...