TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Trabalho sobre GPU

Por:   •  22/8/2017  •  Artigo  •  1.819 Palavras (8 Páginas)  •  197 Visualizações

Página 1 de 8

Graphics Processing Unit (GPU)

Danilo Ferreira da Silva

Universidade Federal de Viçosa

Rio Paranaíba - Brasil

danilo.f.silva@ufv.br

Leslye Esteves

Universidade Federal de Viçosa

Rio Paranaíba - Brasil

@ufv.br

Luiz Henrique

Universidade Federal de Viçosa

Rio Paranaíba - Brasil

@ufv.br

Resumo— Pretende-se neste artigo abordar os conceitos  que se baseiam a Unidade de Processamento  Visual (GPU). Ela é capaz de produzir cálculos matemáticos complexos de forma bem eficaz, a GPU

(Palavras chave — GPU – Graphics Processing Unit)

  1.  Introdução

Antes de surgirem as poderosas GPU’s que existem hoje, quem realizava as tarefas que hoje são das GPU’s eram as CPU’s por meio dos controladores VGA, porém foi visto que isso não era suficiente para a demanda de cálculos específicos do Mercado [2]. Foi assim que em 1999 a NVIDIA lançou a primogênita das placas de vídeo a GeForce 256. Inicialmente as GPU’s tinham como objetivo apenas acelerar geração de grácos 2D e 3D, imagens e vídeos, que seriam utilizados pelos sistemas operacionais[1]. Hoje as GPU’s são essenciais para diversas áreas, uma das principais áreas de sucesso é na área de jogos eletrônicos, tendo como principais fabricantes a NVIDIA e a AMD.

Atualmente as GPU’s tem uma enorme capacidade de processamento e paralelismo, mas não são mais usadas somente para renderização de gráficos, as GPU’s de propósito geral são destinadas ao processamento de alto desempenho, como as GPU’s da arquitetura NVIDIA Tesla que em alguns modelos sequer tem saidas de video na placa.

        Uma boa parte desse enorme desenvolvimento das GPU’s se deve pelo fato da plataforma CUDA (Compute Unied Device Architecture)[1]. A CUDA se trata de uma plataforma de programação que provém um aumento signicativo de desempenho ao aproveitando ao máximo o poder da GPU.

Através deste trabalho iremos destacar as principais tecnologias envolvendo as GPU’s, focando na sua arquitetura e organização.

  1. Pipelines x pipeline gráfica

Se tratando em GPU’s o conceito tradicional que temos de pipeline é semelhante, porém possui diferenças significativas. Sabemos que as pipelines foram criadas para aumentar o poder computacional das CPU’s, em uma CPU a pipeline consiste em uma técnica utilizada pelo hardware para alocar uma ou mais instruções na memória além da próxima a ser executada.

Diferentemente da definição anterior temos a pipeline gráfica que é um modelo conceitual que descreve os passos que um sistema gráfico deve tomar ao renderizar uma imagem 3D para um ambiente 2D. Explicando de forma sucinta quando a GPU é utilizada, ela recebe primitivas geométricas, através dessas primitivas ele compõe triângulos que serão sombreados e mapeados na tela, em seguida esses triângulos serão rasterizados e por fim serão exibidos na tela.

Atualmente é comum termos objetos 3D sendo renderizados para os nossos monitores, principalmente jogos, então foram criadas API’s como Direct3D e OpenGL para unificar e controlar as etapas pipeline de gráficos de uma GPU. Vale ressaltar que ambas pipelines são implementadas em hardware.

  1. GPGPU

As GPUs possuem uma capacidade muito maior em realizar operações aritméticas do que as CPUs, devido a sua organização que possui milhares de núcleos menores trabalhando de forma paralela, essa organização é extremamente eficiente realizando cálculos envolvendo números reais, enquanto a CPU possui poucos núcleos (comumente entre 2 à 8 núcleos) maiores e que trabalham de forma sequencial. Tal vantagem em relação às CPUs, vislumbrou um novo segmento para as GPUS, a de trabalharem em outras aplicações que demandam um grande poder de processamento, tal abordagem ficou conhecida como GPGPU. Inicialmente os algoritmos que puderam migrar para as GPUS, foram os algoritmos que utilizava-se das linguagens shading de alto-nível por exemplo HLSL, Cg e GLS, com isso muitos programadores adaptaram seus algoritmos para se encaixar nos padrões de renderização das pipelines gráficas das APIs como o Directx e o Opengl [7]. No entanto as GPUs tinham algumas desvantagens em relação as CPUs, a principal era que, os programadores precisavam ter um grande conhecimento das APIs gráficas e da arquitetura da GPU, a complexidade dos programas era absurdamente elevada, pois a GPU só conseguia processar programas shaders e coordenada de vértices, então os programadores tinham que expressar os seus problemas de de tal maneira que as GPUs conseguissem processar, conceitos básicos de programação, como leitura e escrita de acesso aleatório na memória não eram suportados, dificultando muito o modelo de programação. Para solucionar esses problemas, a NVIDIA lançou duas importantes tecnologias, o chip NVDIA G80 e a plataforma de programação CUDA [7].

  1. Chip g80 e cuda

Diferentemente das tecnologias anteriores da NVIDIA, como a G70, a G80 possui agora os stream processors, que são unidades de pontos flutuantes programáveis [10]. O G80 passou a suportar a linguagem C, permitindo os programadores  utilizar todo o poder da GPU, sem a necessidade de aprender uma nova linguagem e fazer adaptações complexas em seus algoritmos [8].

[pic 1]

        Fig 1.

O G80 também introduziu uma tecnologia em que todos os threads compartilham do mesmo espaço de memória[7].

        Os threads blocks são lotes de threads onde eles trabalham sincronizando suas ações, assim compartilhando o acesso a memória sem risco, eficientemente compartilhando dados através de um compartilhamento de memória de baixa latência [7].

O G80 também foi a primeira GPU a trabalhar com um processador escalar (processador que realiza cálculos em velocidades muito elevadas e que trabalha apenas com valores escalares) [7].

                          

CUDA (Compute Unified Device Architecture)

É uma arquitetura de hardware e software, que cria um ambiente de programação, onde possibilita as GPUs        executarem programas escritos em linguagens de programação de alto-nível, principalmente, o C, outras linguagens também são suportadas, como o Fortran, OpenCL e outras linguagens.

...

Baixar como (para membros premium)  txt (11.7 Kb)   pdf (161.6 Kb)   docx (54.5 Kb)  
Continuar por mais 7 páginas »
Disponível apenas no TrabalhosGratuitos.com