CUDA
 
 
CUDA PROGRAMAÇÃO PARALELA MAIS FÁCIL
O que é CUDA?
CUDA™ é uma plataforma de computação paralela e um modelo de programação inventados pela NVIDIA. Ela permite aumentos significativos de performance computacional ao aproveitar a potência da unidade de processamento gráfico (GPU).

Com milhões de GPUs habilitadas para CUDA já vendidas até hoje, os desenvolvedores de software, cientistas e pesquisadores estão descobrindo usos amplamente variados para a computação com GPU CUDA. Aqui estão alguns exemplos:

Identificação de placas ocultas em artérias: Ataques cardíacos são a maior causa de mortes no mundo todo. A Harvard Engineering, a Harvard Medical School e o Brigham & Women's Hospital se reuniram para usar GPUs com o objetivo de simular o fluxo sanguíneo e identificar placas arteriais ocultas sem fazer uso de técnicas de imageamento invasivas ou cirurgias exploratórias.

Análise do fluxo de tráfego aéreo: O National Airspace System (Sistema de Espaço Aéreo Nacional) gerencia a coordenação do fluxo de tráfego aéreo em âmbito nacional. Modelos computacionais ajudam a identificar novas maneiras de aliviar congestionamentos e manter o tráfego de aeronaves fluindo de forma eficiente. Utilizando o poder computacional das GPUs, uma equipe da NASA obteve grande ganho de performance, reduzindo o tempo de análise de dez minutos para três segundos.

Visualização de moléculas: Uma simulação molecular denominada NAMD (dinâmica molecular em nanoescala) alcança um grande aumento de performance com o uso de GPUs. Essa aceleração é resultado da arquitetura paralela das GPUs, que permite que desenvolvedores NAMD migrem partes de aplicativos com alta demanda computacional para a GPU utilizando o CUDA Toolkit.

HISTÓRICO

Computação com GPU: A Revolução

Você enfrenta desafios: melhorar a performance, resolver problemas mais rapidamente. O processamento em paralelo seria mais rápido, mas a curva de aprendizado é alta, não é?

Não é mais. Com a CUDA, você pode enviar código em C, C++ e Fortran diretamente à GPU, sem precisar usar uma linguagem de compilação.

Desenvolvedores em empresas como Adobe, ANSYS, Autodesk, MathWorks e Wolfram Research estão acordando o gigante adormecido — a GPU — para executar computação científica de propósito geral e de engenharia em uma ampla variedade de plataformas.

Usando linguagens de alto nível, aplicativos acelerados por GPU executam as partes sequenciais de suas cargas de trabalho na CPU – que é otimizada para performance com um único segmento (thread) – ao mesmo tempo em que aceleram o processamento em paralelo da GPU. Isso é chamado de "computação com GPU".

A computação com GPU é possível porque a GPU de hoje faz muito mais do que processar imagens: ela lida com um teraflop de performance de ponto flutuante e processa tarefas de aplicativos projetados para tudo, desde finanças, até medicina.

A CUDA está amplamente implementada por meio de milhares de aplicativos e artigos de pesquisa publicados, e é suportada por uma base instalada de mais de 375 milhões de GPUs habilitadas para CUDA em notebooks, estações de trabalho, clusters de computação e supercomputadores.

Acesse o CUDA Zone para ver exemplos de aplicações em vários mercados verticais… e despertar sua GPU.

Histórico da computação com GPU

As primeiras GPUs foram projetadas como aceleradores gráficos, suportando somente pipelines de função fixa específicos. A partir do final dos anos 90, o hardware tornou-se cada vez mais programável, culminando na primeira GPU NVIDIA em 1999. Menos de um ano após a NVIDIA ter cunhado o termo GPU, artistas e desenvolvedores de jogos não eram os únicos a realizar trabalhos inovadores com a tecnologia: pesquisadores estavam tirando proveito de sua excelente performance de ponto flutuante. Nascia o movimento da GPU de Propósito Geral (GPGPU).

Mas a GPGPU não era nada fácil naquela época, nem mesmo para aqueles que conheciam linguagens de programação gráficas como a OpenGL. Os desenvolvedores tinham que mapear cálculos científicos a problemas que poderiam ser representados por triângulos e polígonos. A GPGPU era algo praticamente fora de questão para quem não havia memorizado as últimas APIs gráficas, até que um grupo de pesquisadores da Stanford University se reuniu para reformular a GPU como um "processador de transmissão".

Em 2003, uma equipe de pesquisadores liderada por Ian Buck anunciou o Brook, o primeiro modelo de programação de ampla adoção a ampliar a linguagem C com construções de paralelismo de dados. Usando conceitos como fluxos, kernels e operadores de redução, o compilador Brook e um sistema de tempo de execução revelaram a GPU como um processador de propósito geral em uma linguagem de alto nível. E, ainda mais importante, os programas em Brook não apenas eram mais fáceis de serem codificados que os códigos de GPU ajustados manualmente, mas também eram sete vezes mais rápidos que os códigos similares existentes.

A NVIDIA sabia que um hardware extremamente rápido tinha que ser combinado a ferramentas intuitivas de software e hardware, e por isso convidou Ian Buck para juntar-se à empresa e começar a desenvolver uma solução para executar o C na GPU de forma fluida. Juntando o software e o hardware, a NVIDIA apresentou a CUDA em 2006, a primeira solução do mundo para computação de propósito geral em GPUs.

ECOSSISTEMA

Ferramentas e treinamento

Atualmente, o ecossistema CUDA cresce com rapidez à medida que cada vez mais empresas fornecem ferramentas, serviços e soluções de classe mundial.

Se você quiser escrever seu próprio código, a forma mais fácil de aproveitar a performance das GPUs será usar o CUDA Toolkit, que oferece um ambiente de desenvolvimento abrangente para desenvolvedores C e C++.

O CUDA Toolkit inclui um compilador, bibliotecas de matemática e ferramentas para depuração e otimização da performance de seus aplicativos. Você encontrará também exemplos de código, guias de programação, manuais do usuário, referências de APIs e outras documentações para ajudá-lo a começar.

A NVIDIA oferece tudo isso gratuitamente, incluindo o NVIDIA Parallel Nsight for Visual Studio, o primeiro ambiente de desenvolvimento da indústria para aplicativos de processamento paralelo massivo que utilizam tanto GPUs quanto CPUs.

Aprender a utilizar a CUDA é fácil, com o abrangente treinamento on-line disponível, bem como outros recursos como seminários via web e livros. Mais de 400 universidades ensinam a programação CUDA, incluindo vários Centros de Excelência CUDA e Centros de Pesquisa e Treinamento CUDA.

Soluções para Fortran, C#, Python e outras linguagens encontram-se disponíveis. Explore o Ecossistema de Computação com GPU no CUDA Zone para saber mais.

 
Para desenvolvedores
Visite o CUDA Zone para começar a programar em paralelo e ver a tecnologia CUDA em ação

Acessar CUDA Zone
O QUE AS PESSOAS ESTÃO DIZENDO
"As GPUs evoluíram ao ponto de permitirem que muitos aplicativos do mundo real sejam facilmente implementados e executados de forma significativamente mais rápida do que em sistemas com vários núcleos. As futuras arquiteturas de computação serão sistemas híbridos, com GPUs de núcleo paralelo operando em conjunto com CPUs de vários núcleos."

-- Jack Dongarra
Professor da Universidade do Tennessee

"A CUDA é uma plataforma computacional completa para C/C++/Fortran na GPU. Quando começamos a criar a CUDA, tínhamos várias opções para o que poderíamos construir. A informação principal que os clientes nos forneciam era que eles não queriam ter que aprender uma linguagem ou API totalmente nova. Alguns deles estavam contratando desenvolvedores de jogos porque sabiam que as GPUs eram rápidas mas não sabiam como usá-las. Fornecer uma solução que fosse fácil, que você pudesse aprender em uma única sessão e na qual você pudesse ver o ganho de performance em relação ao seu código para CPU era fundamental."

-- Ian Buck
Gerente Geral, NVIDIA

 


 
 
TwitterFacebookLinkedInGoogle+Reddit