Cuda
O que é:
Compute Unified Device Architecture (CUDA) é uma arquitetura de computação paralela desenvolvida pela Nvidia . CUDA é o motor de computação em Nvidia unidades de processamento gráfico (GPUs) que é acessível para desenvolvedores de software através de variantes de línguas de programação padrão da indústria (Está disponível gratuitamente, é multi-plataforma (Windows / Linux / Mac), já possui versão estável, é bem documentada e suportada pela nVidia.)
O hardware gráfico é famoso pelo alto poder computacional ao processar streams de dados. Até meados de 2004, estes streams eram apenas conjuntos de vértices, pontos ou pixels de jogos e ferramentas de visualização. Com a linguagem Cuda a nVidia tenta expandir seu público alvo, possibilitando o uso do hardware gráfico por outros desenvolvedores.
Cuda pode ser considerada uma API de baixo nível, pois expõe os tipos diferentes de memória da placa gráfica e exige que o desenvolvedor configure seus acessos a memória global, a cache e a quantidade e disposição das threads para atingir a melhor performance. Nada é automático. A placa gráfica é vista como um simples dispositivo operando como um co-processador, e aguardando instruções da aplicação cliente. O desenvolvedor é o responsável pelo escalonamento de atividades entre a CPU (Host) e a GPU.
O código que rodará na placa de vídeo é chamado de kernel , um único código que será executado sobre um grande conjunto de informações. As funções de um programa convencional, que são chamadas muitas vezes com entradas e saídas independentes, são as primeiras a se transformarem em kernels.
Por exemplo, uma operação que soma 1 em cada valor de um vetor com 1 GB de dados, pode facilmente ser transformada em um kernel, onde várias threads irão somar 1 e armazenar o valor na mesma posição. Nesse caso, não é necessário sincronia, nem comunicação entre as threads. Perfeito para a GPU.
No jogo de computador da indústria, além de renderização de gráficos, as GPUs são usados