O documento descreve uma técnica para implementar toda a lógica de um jogo na GPU utilizando a arquitetura CUDA, com o objetivo de reduzir a comunicação entre a GPU e CPU. A técnica envolve dividir as tarefas do jogo em aquisição, processamento e apresentação de dados e implementar essas etapas completamente na GPU usando multithreading. Os resultados demonstraram que a abordagem permite taxas de quadros mais altas em comparação com o processamento na CPU.
Trello - workshop interno Cinema Nosso e Jabuti Filmes
GPGPU Game Design
1. Techniques for
Designing
GPGPU Games(Mark Joselli, José Ricardo da Silva Junior, Marcelo Zamith, Esteban Clua, Mateus
Pelegrino, Evandro Mendonça MediaLab- IC/UFF Universidade Federal Fluminense)¹
Anny Caroline, Emerson Silva e Herick HenriqueGrupo:
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
2. ORGANIZAÇÃO DA APRESENTAÇÃO
◎ Introdução
◎ Trabalhos Relacionados
◎ Técnicas Utilizadas
◎ Arquitetura
◎ Resultados
◎ Conclusão
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
4. Arquitetura Multi-Thread
pode ser utilizada para um processamento genérico e permite
que os videogames possam performar em paralelismo. Em um
jogo, a arquitetura executa tarefas em paralelo, utilizando todo o
potencial dos hardwares.
INTRODUÇÃO
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
5. Loop Principal de Um Jogo
Geralmente são divididos em três categorias, nas quais possibilita
um modelo de arquitetura que implementa os processos da lógica
do jogo dentro de uma GPU:
- Recebimento de dados: executado preferencialmente pela
CPU;
- Processamento de dados: processados pela CPU e ou GPU
- Apresentação de dados: imagens processadas pela GPU e
áudios pelo CPU
INTRODUÇÃO
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
6. O desenvolvimento de GPUs programáveis têm proporcionado novas
possibilidades para a chamada Unidade de Processamento Gráfico de
Propósito Geral (GPGPU), utilizada para elevar o nível de realismo das
simulações virtuais. Contudo, ao utilizar a GPGPU normalmente dividimos o
processamento das tarefas entre a GPU e a CPU, desta forma pode ocorrer
limitações nas simulações, devido a necessidade de grande transferência de
dados entre elas. A proposta deste artigo refere-se a implementar todos os
métodos do jogo inteiramente na GPU, utilizando a arquitetura CUDA,
conseguindo assim manter a comunicação GPU-CPU no mínimo.
INTRODUÇÃO
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
8. Processamento Sequencial x Paralelo
A arquitetura de GPUS são especialmente desenhadas para processar tarefas
que necessitam uma alta taxa de cálculos matemáticos e largura de banda
(muitos dados). A GPU para performar, necessita de um tipo de programação
diferente da tradicional, que é a sequencial, sendo que esta é utilizada na CPU.
Os desenvolvedores necessitam utilizar paralelismo para que seja possível
utilizar todo o poder de processamento da GPU, como a arquitetura
apresentada neste artigo.
TRABALHOS RELACIONADOS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
9. Técnicas nos Jogos
Existem várias técnicas que lidam com a área de atuação do GPGPU ,
contudo a técnica mais a utiliza são as direcionadas a física do jogo.
Atualmente, observa-se que todos os maiores motores de física dos jogos
no mercado, fizeram ou tem feito tentativas de usar a GPU para processar
estes cálculos. Um dos mais impressionantes é o nVIDIA PhysX, que é um
motor de física que usa a arquitetura CUDA para otimizar os cálculos.
TRABALHOS RELACIONADOS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
10. Técnicas nos Jogos
Também podem ser utilizadas na GPGPU a lógica e as IAs dos jogos, porém
estas áreas ainda não foram completamente exploradas. Normalmente
utiliza-se uma FSM na GPU, porém é uma funcionalidade bastante primitiva,
que não deve ser usada para jogos.
Além disso, a GPGPU pode ser também encontrada na simulação de
multidões, que podem ser usados para simular, por exemplo,
comportamento de rebanho, soldados no campo de batalha dentre outros.
Essas funcionalidades são particularmente importantes, desde que propõem
um simples modelo de IA a ser implementado na arquitetura da GPU.
TRABALHOS RELACIONADOS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
11. Diferencial Deste Trabalho
O artigo estudado, propõe uma metodologia que se diferencia das demais,
por abordar uma arquitetura que aloca todas as tarefas do jogo,
necessariamente para ser processada pela GPU. Cabe ressaltar que os
autores deste artigo, não encontraram dentro da literatura, nenhum outro
trabalho que utiliza-se a GPU para processar a lógica do jogo inteiramente.
TRABALHOS RELACIONADOS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
13. “
Muitos jogos utilizam GPGPU para processar
partes de uma tarefa (uma parte na GPU e
outra na CPU). Isto requer muita
transferência de dados entre eles, podendo
causar um gargalo.²
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
14. TÉCNICA UTILIZADA NESTE TRABALHO
Mínima Comunicação entre GPU x CPU
Implementação de todos os métodos do jogo na GPU com o
uso da Arquitetura CUDA.
Memória Compartilhada
A arquitetura foi adaptada para utilização da memória
compartilhada, pois esta só pode ser acessada por threads de
do bloco em que foi criado, no qual possuem vida finita.
Divisão Espacial (colisão e agentes)
Grid uniforme com custo de construção constante e grid de
vizinhança
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
15. TÉCNICA UTILIZADA NESTE TRABALHO
CASO DE TESTE
O caso de teste é um projeto e implementação do GPUWars
game, que é um atirador 2D que tem tarefas paralelas, IA, física
e pontuação do jogo, que são todos processados no GPU
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
17. ARQUITETURA
Aquisição de data
Inputs do jogador
que são os
comandos que o
mesmo efetua na
aplicação que é
utilizada pela CPU.
Processamento de
data
Controla a lógica
dentro do jogo como
física e IA que será
feita pela GPU neste
caso.
Apresentação de
data
Feedback ao jogador
utilizando áudio e
imagem que será
trabalho da GPU
também.
Jogos de Computadores utilizam de diversos campos de
conhecimento como renderização, IA, física, etc.
Estes podem ser divididos em três tipos de tarefas gerais.
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
18. A aplicação em destaque utiliza de
multithreading CUDA com GPGPU.
A informação entre CPU-GPU é
uma estrutura encapsulada para
manter o mínimo de comunicação.
RNG não existe no contexto
GPGPU, então foi utilizado uma
criada na demo da nVidia.
ARQUITETURA
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
19. Criação de tiros, inimigos e
animações utiliza uma lista de
valores disponíveis para criação
dos mesmos, que faz com que a
GPU crie threads vazios
Para evitar perda de performance
por sincronização destes threads, se
agrupam os threads que têm
funções similares em um bloco
ARQUITETURA
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
20. A inteligência artificial do
jogo se movimenta pela
distância de visão de cada
indivíduo.
Para isso se utilizou grades
uniformes e de vizinhos a
fim deles se agruparem e
saberem a proximidade
entre eles.
ARQUITETURA
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
22. ◎ Os testes resultaram numa taxa de 45 a 58 FPS considerada
otimizada
◎ Testes com CPU calculando a IA resultou em 30 FPS com 8k de
inimigos
E 22 FPS com 4k de inimigos utilizando somente a CPU
RESULTADOS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
24. Arquiteturas Multithread são Tendência
Diferencial de abordagem deste projeto, desenvolvendo a
lógica do jogo toda na GPU;
Os conceitos da arquitetura proposta também podem ser
aplicados a outros processadores multi-core;
Como desvantagem é que para aproveitar ao máximo o poder
da GPU, todas as tarefas do jogo devem ser implementado em
kernels GPGPU;
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
25. 1. JOSELLI, M., SILVA JUNIOR, J. R., ZAMITH, M., SOLURI, E., MENDONCA, E.,
PELEGRINO, M., AND CLUA, E. W. G. 2012. Techniques for designing gpgpu
games. In Games Innovation Conference (IGIC), 2012 IEEE International, 78–82
1. J. Krueger, “A gpu framework for interactive simulation and rendering of fluid
effects,” IT - Information Technology, vol. 4, p. (accepted), 2008. [Online].
Available: http://www.sci.utah.edu/publications/krueger08/GPU
framework.pdf
REFERÊNCIAS
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES
26. Techniques for
Designing GPGPU
Games
(Mark Joselli, José Ricardo da Silva Junior, Marcelo Zamith, Esteban Clua, Mateus
Pelegrino, Evandro Mendonça MediaLab- IC/UFF Universidade Federal Fluminense)¹
Anny Caroline, Emerson Silva e Herick HenriqueGrupo:
SEMINÁRIO | 2017.2 | JOGOS PARA CONSOLES