GPU E CUDA
Processador extremamente potente e flexível.
Inicialmente projetado para processamento gráfico em 3D.
Poder Computacional CPU xGPU
Intel Core2 Quad 3.0GHz
96 GFLOPS
Largura de banda: 21
GB/s
Preço: $1100
Crecimento anual: 1.4x
NVidia GeForce 8800GTX
330 GFLOPS
Largura de banda: 55.2 GB/s
Preço: $550
Crecimento anual: 1.7x (fragment shader ) 2.3x (vertex shader )
Caracteristicas
Flexibilidade
GPU são altamente programáveis: {vertex , geometry , fragment } shader
Linguagens de programação de alto nível.
GPUs recentes suportam cálculos de alta precisão.
32 bits em todo o pipeline.
Precisão suficiente para a maioria das aplicações.
Por que são potentes?
Inicialmente foram projetadas para executar cálculo matemático e processamento paralelo intenso. Maior número de transistores para processamento que para caching de dados e controle de fluxo. Problemas?
Não é fácil de se usar.
●
GPUs foram desenhadas para processamento gráfico.
○ Modelo de programação não usual;
○ Programação dependente do pipeline gráfico.;
○ Ambiente de programação restrito;
●
Arquiteturas de GPUs.
○ Executam processamento paralelo;
○ Em constante evolução;
○ Fechada, segredo do fabricante;
●
Codificação.
○ Não basta "recompilar" código tradicional;
○ Ferramental mínimo;
CUDA (NVIDIA)
Acrônimo de Compute Unified Device Architecture, o CUDA é uma engine de computação desenvolvida pela Nvidia para permitir que programadores utilizem todo o poder de processamento de suas placas de vídeo (GPUs) em algoritmos otimizados para utilizar recursos de computação paralela. Suportando várias linguagens de programação, como C,
C++, Java, Fortran e Python, essa tecnologia não obriga o programador a aprender uma nova linguagem para criar seus programas, já que oferece uma camada de "tradução" entre a que ele já sabe (como Java, por exemplo) e faz o código uilizar os recursos da placa de vídeo