Placa de vídeo em CUDA Matheus Costa Leone de Souza Krystian Aparacido Resumo Quando você tem um cálculo que possa ser grande demais para você realizar a mão, a primeira solução que lhe vem a cabeça é pegar uma calculadora, não é mesmo? No entanto, quando você tem uma série de cálculos extremamente complexos que poderiam te tomar horas em uma calculadora enquanto você tem poucos segundos para resolvê-los, é preciso algo muito maior. CUDA, sigla para Compute Unified Device Architecture, é uma extensão para a linguagem de programação C, a qual possibilita o uso de computação paralela. A ideia por trás disso tudo é que programadores possam usar os poderes da unidade de processamento gráfico (GPU) para realizar algumas operações mais rapidamente. Abstract When you have a calculation that can be too big for you to perform a hand, the first solution that comes to mind is to get a calculator, Is not it? However, when you have a number of extremely complex calculations that could take you hours on a calculator while you have a few seconds to solve them, we need something bigger. CUDA, which stands for Compute Unified Device Architecture, It is an extension to the C programming language, which enables the use of parallel computing. The idea behind this is that developers can use the power of the graphics processing unit (GPU) to perform some operations faster.
Introdução A computação paralela é uma forma interessante de agilizar processos grandes demais. Na verdade, esse tipo de processamento pode ser comparado com a forma em que trabalhamos. Quando temos uma tarefa muito complexa para ser resolvida, acabamos dividindo-a em afazeres menores e mais fáceis de serem terminados. Com isso, aos poucos, acabamos também conquistando o objetivo maior, composto pela soma dessas atividades reduzidas. Grosso modo, podemos dizer que é dessa maneira que a computação paralela funciona. Quando uma tarefa muito complexa é executada, ela pode ser dividida em atividades mais simples, que são distribuídas pelos núcleos de um processador ou, até mesmo, enviadas para diferentes máquinas que integram um sistema computacional maior, como um cluster. Assim, o resultado é obtido mais rapidamente. A CUDA é a plataforma de computação paralela desenvolvida pela NVIDIA, a qual tem ganhado cada vez mais notoriedade por seu desempenho. Neste artigos vamos explicar tudo sobre essa tecnologia.
Desenvolvimento Divulgação/NVIDIA Em suma, a GPU passa a operar como se fosse mais um CPU dentro máquina, aumentando a performance do sistema. Jogos de computadores costumam usar a CUDA para o cálculo de propriedades físicas, como efeitos de fogo, água e fumaça. Todavia, a tecnologia também é capaz de trabalhar com aplicações não gráficas, como softwares de criptografia e simulações biológicas. A renderização de texturas, por exemplo, não é suportada pela CUDA. Além disso, as diversas cópias realizadas entre uma memória e outra podem causar algum impacto no desempenho geral das aplicações, mas isso varia de acordo com o barramento do sistema. Outro problema a ser considerado diz respeito à compatibilidade do software desenvolvido dessa forma. Lembre-se de que a CUDA é uma tecnologia da NVIDIA e, portanto, ela só funciona com placas de vídeo fabricadas por essa empresa. Uma alternativa mais aberta seria a OpenCL, desenvolvida inicialmente pela Apple. Caso o computador não tenha uma placa NVIDIA instalada, o código CUDA funcionará corretamente. Porém, como todo o processamento será feito pelo CPU, o desempenho será bem inferior.
Como era de se esperar, a tecnologia da NVIDIA não é a solução para todos os problemas. A CUDA possui algumas limitações que devem ser levadas em conta pelos programadores ao desenvolverem seus softwares. Existem ainda alguns usos inusitados, como é o caso da empresa General Mills, que resolveu aplicar a CUDA para descobrir qual é a melhor forma de assar uma pizza congelada no forno micro-ondas. Em vez de assar milhares de pizzas, a companhia usou modelos virtuais do alimento para descobrir como elas recebiam os efeitos da radiação de micro-ondas. Foi mais rápido e mais barato realizar testes virtuais antes de partir para a prática. História No final dos anos 90, surgiu a primeira GPU da NVIDIA, quando o hardware começou a tornar-se cada vez mais programável. A partir de então pesquisadores começaram a estudar sobre o assunto, culminando na GPU de Propósito Geral (GPGPU). Entretanto a GPGPU naquela época era muito mais complexa, e poucas pessoas conseguiam trabalhar com ela, até que uma equipe de pesquisadores da Universidade de Stanford reuniu-se para melhorar a GPU. Em 2003, um grupo de pesquisadores liderado por Ian Buck desenvolveu o Brook, o primeiro modelo de programação a adotar a linguagem C em uma plataforma de computação paralela, revelam assim uma GPU como um processador de propósito geral em uma linguagem de alto nível, além de os programas em Brook serem sete vezes mais rápidos. A NVIDIA então sabia que um hardware extremamente rápido assim deveria conter ferramentas intuitivas, por isso convidou Ian Buck para trabalhar na empresa e começar a desenvolver uma solução para executar o C na GPU de forma melhor. Assim, a NVIDIA apresentou em 2006 o CUDA, a primeira solução para computação de propósito geral em GPUs. Algumas Placas que contém cuda Nvidia GeForce Nvidia GeForce Mobile Nvidia Quadro GeForce GTX TITAN GeFoce GTX 680MX Quadro K6000 GeForce GTX 690 GeForce GTX 680M Quadro K5000 GeForce GTX 650 GeForce GTX 750 GeForce GT 220
Conclusão A utilização da tecnologia CUDA, não é aplicada apenas no desenvolvimento de jogos, mas também nas áreas petrolíferas e para toda área de processamento da linguagem C e Phyton. ` Referências http://www.tecmundo.com.br/computacao-grafica/10507-nvidia-cuda-o-que-e-e-comofunciona.htm Nvidea Ian Buck OBS: Não foi encontrado os nomes dos desenvolvedores físicos da tecnologia CUDA.