Unidade de Processamento Gráfico
Por: Anna Lara Moraes • 20/8/2019 • Trabalho acadêmico • 2.252 Palavras (10 Páginas) • 253 Visualizações
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS
Anna Lara Moraes Caixeta,
Lucas de Souza Ferreira,
Mateus André Fidelis
GPU/GPGPU
GOI NIA
2019
SUMÁRIO
Introdução 3
História da GPU 3
Primeira Geração 3
Segunda Geração 3
Terceira Geração 4
Quarta Geração 4
Quinta Geração 5
GPGPU 5
Arquitetura da GPU 6
A evolução da arquitetura das GPGPUs NVIDIA 8
G80 8
G200 9
Fermi 9
Kepler 9
PIPELINES GRÁFICOS 9
Pontos flutuantes 12
Paralelismo 12
Conclusão 13
Referências 14
Introdução
A GPU(graphics processing unit) é uma unidade de processamento desenvolvida com o objetivo de processar apenas gráficos 3D e também em processamentos com ponto flutuante. Por isso que ela é principalmente utilizada hoje em computadores para cálculos matemáticos complexos, videogames para renderização de gráficos em 3D e até mesmo em dispositivos móveis com o Iphone.
Umas das diferenças entre a GPU e a CPU(Central Processing Unit) é que na GPU tem mais circuitos para o processamento do que na CPU, porém por sua vez elas possuem mais cache e controle de fluxo. A GPU tem como característica a capacidade de processar trechos de código em paralelo de maneira muito eficiente, ela se difere da CPU nesse quesito, pois enquanto a CPU dedica grande quantidade de circuitos ao controle, a GPU dedicada nas unidades aritméticas.
História da GPU
Primeira Geração
A primeira geração vai de 1980 até o final de 1990, com a GPU composta de estágios de processamento fixos, especializados e não programáveis .
Segunda Geração
Entre os anos de 1999 e 2000, surgiram as GPUs de segunda geração, Tais GPUs eram capazes de realizar transformações e efeitos de iluminação (T&L) sobre os vértices dos objetos 3D, liberando a CPU de tal carga de processamento. Nesta mesma época, os padrões OpenGL e DirectX 7 também passaram a suportar T&L via hardware. O conjunto de operações matemáticas expandiu-se um pouco, passando a suportar cube mapping e operações com sinal, mas continuou bastante limitado.
NVidia GeForce 256
Terceira Geração
A terceira geração de GPUs foi bastante curta e restringiu-se às GPUs lançadas em 2001. Esta foi a primeira geração a permitir a execução, na própria GPU, de programas para transformação de vértices (Vertex Shaders). Sendo assim, ao invés de oferecer suporte em hardware dos modos de iluminação e transformação especificados pelas bibliotecas OpenGL e DirectX 7, estas GPUs deixavam a aplicação especificar qual era a seqüência de operações a ser realizada sobre os vértices.
ATI Radeon 8500.
Quarta Geração
A quarta geração de GPUs, que compreende as GPUs lançadas entre os anos de 2002 e 2005, permitiam tanto a programação de vértices quanto a de fragmentos (pixel shaders). Foi com esta geração de placas que surgiu o “C for graphics”, mais conhecido como Cg, desenvolvido pela NVidia, uma linguagem de programação baseada em C e voltada para a implementação de vertex programs e fragment programs que veremos mais adiante.
NVidia GeForce FX
Quinta Geração
Esta geração compreende todas as GPUs lançadas a partir de 2006, cuja principal característica é a arquitetura unificada de processamento e um pipeline cíclico. Estas GPUs também possuem suporte à linguagens de programação de mais alto nível que o Cg como, por exemplo, o CUDA no caso da NVidia.
ATI Radeon HD.
GPGPU
Assim que se deu o início da utilização das GPUs para propósito gerais, foi desenvolvidas ferramentas e facilidades na arquitetura das GPUs, e também na programação com a introdução da CUDA(Computer Unified Device Architecture), desenvolvida pela NVIDIA, em meados de 2006. A GPU G80 da NVIDIA foi a primeira geração de GPUs preparada para CUDA e suporte a linguagem C, o que tem melhorado cada vez mais na gerações seguintes: G200 lançada em 2008; Fermi, lançada em 2009 e Kepler, lançada em 2012.
A CUDA tem o objetivo de facilitar a interface entre o programador e as aplicações GPU. Com isso, surgiu o termo GPGPU (General-Purpose Computing on Graphics Processing Units).os desenvolvedores hoje em dia podem usar C - uma das mais amplamente utilizadas linguagens de programação capaz de operações de baixo nível, que pode ser então executada com alta performance em um processador compatível com CUDA. A CUDA também oferece suporte a linguagens de programação como C++, Fortran, OpenCL e DirectX.
O conceito fundamental de programação através do CUDA é a thread batching. Durante a programação através do CUDA, a GPU é vista como um dispositivo computacional capaz de executar um número elevado de threads em paralelo. Uma função CUDA é chamada de kernel, quando ocorre uma chamada a função kernel o fluxo de execução sai da CPU (ou host) e vai para GPU (ou device). Então, a placa de vídeo executa o código do kernel em paralelo e após a finalização da execução, a CPU continua através da thread principal da
...