SlideShare ist ein Scribd-Unternehmen logo
1 von 122
Filipo Novo Mór
Desenvolvendo
aplicações de uso geral
para GPU com CUDA.
Mini-curso
17 de Outubro de 2016
Semana Acadêmica
Faculdade SENAC Porto Alegre
Agenda
• Conceitos básicos
• Um Pouco de História
• O que é uma GPU?
• Programação GPU CUDA
• Exemplos
• Alternativas a CUDA
• Roadmap GPUs NVIDIA
Conceitos Básicos
CPU Driven Graphics
RAMRAMRAM
CPU
CPU Driven Graphics
RAMRAMRAM
CPU Driven Graphics
CPU
video
adapter
Um Pouco de História
Um Pouco de História
• Aceleradores gráficos.
– Um “meio de campo” entre o processador e a
saída de vídeo.
• Alguns exemplos:
Um Pouco de História
• 1976: RCA Pixie (CDP1861)
– Resolução de 62x128 (RCA Studio II)
Um Pouco de História
• 1977: Television Interface Adapter (TIA) 1A
– Som, joysticks e tela
– Animação por sprites
Um Pouco de História
• 1978: Motorola MC6845
– Monochrome and Color Display Adapter
(MDA/CDA)
– Base para IBM PC (1981) , Apple II e Tandy CoCo
Um Pouco de História
• 1982: Intel iSBX275
– Resolução 256x256 (8 cores)
– Resolução 512x512 (monocromático)
– 32MB
– DMA
Um Pouco de História
• 1984: IBM EGA (Motorola 6845)
– Resolução 640x350 (16 cores)
– Paleta de 64 cores.
Um Pouco de História
• 1985: Fundação da Array Technology Inc (ATI) no
Canadá por 3 imigrantes de Hong Kong.
• Principais contribuições:
– Color Emulation Card (16kb)
– Consórcio VESA (Video Electronics Standards
Association)
– Série EGA Wonder (que levou ao VGA Wonder).
– Série Rage (primeira com aceleração 3D)
– Família Radeon
• Comprada pela AMD em 2006.
Um Pouco de História
• 1992: Silicon Graphics Inc (SGI) lança o
OpenGL 1.0, a partir da sua API proprietária
IRIS GL (Integrated Raster Imaging System
Graphical Library).
Um Pouco de História
…
void drawBox(void)
{
int i;
for (i = 0; i < 6; i++) {
glBegin(GL_QUADS);
glNormal3fv(&n[i][0]);
glVertex3fv(&v[faces[i][0]][0]);
glVertex3fv(&v[faces[i][1]][0]);
glVertex3fv(&v[faces[i][2]][0]);
glVertex3fv(&v[faces[i][3]][0]);
glEnd();
}
}
…
Um Pouco de História
• Ao mesmo tempo, a Microsoft trabalhava na sua
API gráfica, Direct3D.
• John Carmack da ID Software (DOOM e Quake)
criticou abertament a API 3D da MS.
“…Direct-3D IM is a horribly broken API. It inflicts great
pain and suffering on the programmers using it,
without returning any significant advantages. I don't
think there is ANY market segment that D3D is
apropriate for, OpenGL seems to work just fine for
everything from quake to softimage. …”
Um Pouco de História
• Quake foi portado para OpenGL, mas nunca para Direct
3D da Microsoft.
Um Pouco de História
• 1995: NVIDIA lança o NV1.
Um Pouco de História
• NVIDIA NV1 :
– Quadratic Texture Mapping – QTM
– DirectX foi lançado logo após o lançamento da
placa, porém, usando rasterização por triangulos.
– NVIDIA somente
abandonou QTM no chip
NV3.
Um Pouco de História
Um Pouco de História
• 1999: GeForce 256 SDR - a primeira GPU
David Kirk and Wen-mei Hwu
Um Pouco de História
• 1999: GeForce 256 SDR - a primeira GPU
Grass Demo – NVIDIA Corporation, 1999
O quê é uma GPU?
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)  Recebe
comandos e
dados da CPU
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Recebe
informação no
formato de
triângulos;
 Converte para
formato inteligível
pelo hardware;
 Armazena essa
informação na
cache.
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Vertex Shading
Transform and
Lighting
 Define e
posiciona os pixels
em coordenadas
2D a partir dos
objetos 3D.
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Define os
pixels nas
regiões onde
dois triângulos
se encontram.
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
Chua Hock-Chuan, 2014
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Determina a
cor final de cada
pixel.
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Suaviza
(mistura) as
cores de áreas
limitrofes e
transparências.
Host Interface
Vertex Control
VS / T&L
Triangule Setup
Raster
Shader
Raster Operation
FBI
Vertex
Cache
Texture
Cache
Frame
Buffer
Memory
HOST
(CPU)
 Frame Buffer
Interface –
gerencia os
acessos a Frame
Buffer Memory.
Pipeline OpenGL simplificado
LambdaCube 3D, 2016
O quê é uma GPU?
• Mas em 2006 a NVIDIA lançou uma nova
arquitetura, a GeForce 8800, com uma nova
estrutura.
• Conjuntos de Processadores organizados em
arrays.
O quê é uma GPU?
O quê é uma GPU?
Závodszky, 2014
WARP
O quê é uma GPU?
Mohamed Zahran
Quando blocos de threads são atribuídos a um
multiprocessador, ele é dividido em unidades básicas de
execução chamados WARPs.
O quê é uma GPU?
Taxonomia de Flynn
Onde melhor se enquadra uma GPU?
O quê é uma GPU?
SIMT vs SIMD
• Single Instruction, Multiple Register Sets: cada thread possui seu próprio
conjunto de registradores, consequentemente, instruções podem processar
dados diferentes em diferentes threads com execução simultânea.
• Single Instruction, Multiple Addresses: cada thread pode realizar acessos a
posições não contiguas da memória, dando assim maior flexibilidade ao
programador. No entanto, esta é uma técnica insegura pois este tipo de
acesso pode levar a perda de desempenho em função da serialização dos
acessos a memória.
• Single Instruction, Multiple Flow Paths: o controle de fluxo de diferentes
threads paralelas pode divergir.
Programação GPU com CUDA
• Utilizar opoder de processamento dos aceleradores
gráficos para aplicações que não fossem gráficas era
muito difícil!
– Instruções e estruturas de dados deveriam se basear em
primitivas gráficas, tais como triângulos ou políginos.
• Mas a NVIDIA lançou CUDA em 2007.
Compute Unified Device Architecture
GPGPU
Programação GPU com CUDA
• Sobre o CUDA:
– Permite que porções do código da aplicação sejam
executados diretamente na GPU.
• Extendendo a linguagem
hospedeira:
– C, C++, FORTRAN, etc.
• Utilizando comandos C-like.
• Exige grande conhecimento
sobre a arquitetura do
hardware.
Programação GPU com CUDA
Programação GPU com CUDA
Arquitetura simplificada de uma GPU NVIDIA
Programação GPU com CUDA
• Transferência de dados entre CPU e GPU:
– Barramento PCI Express.
• Transferência de dados entre GPU e GPU:
– SLI (GeForce): não disponível em CUDA.
– GPU Direct
– RDMA.
Alan Gray, 2013
Programação GPU com CUDA
• RDMA:
– Transferência direta entre
a GPU e outro periférico
compatível.
Alan Gray, 2013
Programação GPU com CUDA
• GPU Direct (RDMA):
– Transferência direta GPUs
NVIDIA, 2013
Programação GPU com CUDA
O mundo é das threads!
– Transferência direta GPUs
Programação GPU com CUDA
0 1 2 3 …
thread ID
4
Programação GPU com CUDA
Programação GPU com CUDA
• Memória Compartilhada 10x
mais rápida que Memória
Global.
Programação GPU com CUDA
Nitin Gupta, 2013
 Threads paralelas acessando
posições contiguas de memória =
melhor desempenho!
Branch Divergence
Programação GPU com CUDA
Branch Divergence
Programação GPU com CUDA
Os Desafios-Chave na Programação para GPUs
• Transferência de dados entre CPU e GPU.
• Acesso a memória.
• Branch divergence.
• Não existência de
Recursão.
Programação GPU com CUDA
Mãos a obra!!!
Programação GPU com CUDA
Hello, World!
Programação GPU com CUDA
Código de Jason Sanders, apresentado na GTC 2010.
Hello, World!
Programação GPU com CUDA
Indica que a função será executada no device.
O compilador nvcc separará código host do código device.
Hello, World!
Programação GPU com CUDA
“<<< >>>” indica uma chamada a partir do host a uma função device (kernel).
Indo um pouco adiante...
Programação GPU com CUDA
“add” será disparado pelo host e executado no device.
Então, a, b e c devem apontar para a memória da GPU.
Indo um pouco adiante...
Programação GPU com CUDA
• Ponteiros no código device apontam para memória da GPU:
• Podem ser passados a partir do host e para o host.
• O host não pode acessar a memória da GPU!
• Ponteiros no código host apontam para memória da CPU:
• Podem ser passados a partir do device e para o device.
• O device não pode acessar a memória da CPU!
• cudaMalloc(), cudaFree(), cudaMemcpy()
• Similares a malloc(), free(), memcpy().
Programação GPU com CUDA
Indo um pouco adiante...
Programação GPU com CUDA
• O código foi executado na GPU, mas… onde está o
paralelismo???
• Vamos tornar nosso exemplo um pouco mais
complexo: Soma de Vetores.
Soma de Vetores
Programação GPU com CUDA
c[0] = a[0] + b[0];
Bloco 0
c[1] = a[1] + b[1];
Bloco 1
c[2] = a[2] + b[2];
Bloco 2
c[3] = a[3] + b[3];
Bloco 3
Programação GPU com CUDA
Programação GPU com CUDA
Programação GPU com CUDA
• Revisão!
– Host = CPU
– Device = GPU
– __global__para declarar uma função device.
– Passagem de parâmetros entre host e device.
– Gerenciamento de memória básico:
• cudaMalloc()
• cudaMemcpy()
• cudaFree()
– Disparando kernels no device:
• N cópias da função “add”
• Utilizando blockIdx.x para identificar o índice do
bloco de threads.
Trabalhando com Threads.
Programação GPU com CUDA
• um Kernel CUDA pode ser executado em vários
blocos de threads.
Trabalhando com Threads.
Programação GPU com CUDA
Trabalhando com Threads e Blocos!
Programação GPU com CUDA
blockIdx.x = 2
blockDim.x = 6
threadIdx.x = 2
2 * 6 + 2
14
Trabalhando com Threads e Blocos!
Programação GPU com CUDA
Programação GPU com CUDA
Programação GPU com CUDA
Programação GPU com CUDA
• Revisão!
– Qual a vantagem de se utilizar threads?
• Ao contrário dos blocos, threads possuem mecanismos
para comunicação e sincronização.
– Porque threads e blocos?
• Ocupação da GPU!
Produto Escalar Vetorial
Programação GPU com CUDA
𝑐 = 𝑎 ∙ 𝑏
𝑐 = 𝑎0, 𝑎1, 𝑎2, 𝑎3, 𝑎4 ∙ 𝑏0, 𝑏1, 𝑏2, 𝑏3, 𝑏4
𝑐 = 𝑎0 𝑏0 + 𝑎1 𝑏1 + 𝑎2 𝑏2 + 𝑎3 𝑏3 + 𝑎4 𝑏4
Produto Escalar Vetorial
Programação GPU com CUDA
GPU Programming
Sincronismo e Comunicação entre Threads:
Programação GPU com CUDA
• __syncthreads()promove um encontro entre todas
as threads do bloco.
• No exemplo mostrado, evita uma condição de
corrida.
Um estudo de caso comparativo entre plataformas.
 Problema de N-Corpos
 Implementação serial tradicional.
 Implementação OpenMP
 Implementação CUDA.
Programação GPU com CUDA
Sobre o Problema de N-Corpos
Características:
 Cálculo da força entre todas as partículas.
 Complexidade O(N2)
 Energia no sistema deve ser constante.
 O algoritmo de cálculo das forças demanda
grande poder computacional com o
crescimento de N.
Implementação Serial Tradicional
NAIVE!
• Claramente N2
• Cada par de partículas é calculado duas vezes.
• Aceleração deve ser ajustada ao final.
Implementação Serial Tradicional
• Segue sob domínio N2 , mas:
• Cada par é comparado apenas uma vez.
• Aceleração está OK ao final!
Implementação OpenMP
• Deve se basear na versão “naive”.
• Perdemos o “/2”, mas ganhamos o “/p”!
• OBS: agendamento estático parece ser muito mais rápido para este tipo de
aplicação.
Análise
“naive” Serial
𝑛2
“smart” Serial
𝑛2
− 𝑛
2
for (i=0; i<N; i++)
{
for(j=i+1; j<N; j++)
{
printf(“*”);
}
printf(“n”);
}
*****
*****
*****
*****
*****
≈ 𝒏
𝒏 − 𝟏
𝟐
OpenMP Parallel
𝑛2
𝑝
Implementação CUDA
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Global Memory
Shared
Memory
Bank
N = 15
K = 3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
BARRIER
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
BARRIER
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3 4 5
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
BARRIER
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
6 7 8
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
BARRIER
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
9 10 11
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
BARRIER
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
12 13 14
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Global Memory
Shared
Memory
Bank
Active Tasks
Active Transfers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Global Memory
Shared
Memory
Bank
Implementação CUDA
Cálculo da força entre duas
partículas.
Implementação CUDA
Kernel.
Implementação CUDA
Kernel.
Implementação CUDA
Trecho do código host.
Análise
C : custo da função CalculateForce.
M : custo da transferência entre as
memórias Global e Compartilhada.
T : custo da transfer6encia entre as
memórias da CPU e GPU.
 Acesso a memória Compartilhada
tende a ser até 100x mais rápido
do que à memória Global.
𝑪
𝒏 𝟐
𝒑
+ 𝟐𝑴𝒏 + 𝟐𝑻𝒏
 Inicialmente, todos os elementos são
transferidos da memória do Host para a memória
do Device.
 Cada thread é responsável por apenas uma
partícula.
 Existem (n/k) barreiras durante as sincronizações
entre as memórias Compartilhada e Global.
 A cada barreira, k elementos são transferidos
para a memória Compartilhada por vez.
 Ao final, todos os elementos constantes na
memória Global são copiados de volta para a
memória do Host.
Resultados Experimentais
Testing Environment:
 Dell PowerEdge R610
 2 Intel Xeon Quad-Core E5520 2.27 GHz Hyper-Threading
 8 physical cores, 16 threads.
 RAM 16GB
 NVIDIA Tesla S2050
 Ubuntu Server 10.0.4 LTS
 GCC 4.4.3
 CUDA 5.0
How much would it cost???
Version Cost
Naive 0.49$
Smart 0.33$
OMP 0.08$
CUDA 0.05$
 Amazon EC2:
 General Purpose - m1.large plan
 GPU Instances - g2.2xlarge plan
Resultados Experimentais
Resultados Experimentais
Resultados Experimentais
Resultados Experimentais
Alternativas
Alternativas
• OpenACC
 Allinea
 CRAY Inc
 Edinburgh Parallel Computing Center
 Georgia Tech
 University of Houston
 Indiana University
 NVIDIA
 Oak Ridge National Lab
 The Portland Group Inc (PGI)
 Rogue Wave
 Sandia National Laboratory
 Swiss National Supercomputer Center
 Technical Universitat Dresden
 Tokyo Institute of Technology (TiTech)
 Utilização de diretivas (pragmas) para orientação do compilador, ao estilo OpenMP.
 Promessa: rápida paralelização de código legado.
 Concorrência: OpenMP 4.0 ?
Alternativas
• OpenACC (multiplicação de matrizes)
Alternativas
• OpenACC (multiplicação de matrizes)
 Aloca espaço na memória do
device para os vetores A e B,
antes da execução do kernel.
 Copia os vetores A e B da
memória do Host para a
memória do Device, antes da
execução do kernel.
Alternativas
• OpenACC (multiplicação de matrizes)
 Aloca memória para o vetor C
na memória do device, antes da
execução do kernel.
 Após a execução do kernel,
copia os dados do vetor C da
memória do device para a
memória do host.
Alternativas
• OpenACC (multiplicação de matrizes)
 Blocos com 16 threads cada.
 Quantidade de blocos definida
pela compilador.
pgcc -Minfo=all -ta=nvidia:5.0,cc2x,time -acc -Minfo=accel -lm mmACC_v1_1.c -o mmACC11
Alternativas
• OpenMP 4.0
De acordo com o site da OpenMP, um esforço contínuo está sendo feito no sentido
de unificar as plataformas. Neste contexto, aplicações OpenACC podem ser
consideradas como beta testes de OpenMP 4.0.
Alternativas
• OpenMP 4.0
OpenMP 4.0 para GPU NVIDIA
OpenACC para GPU NVIDIA
NVIDIA Roadmap
Muito obrigado!
Dúvidas? Comentários?
Filipo Novo Mór
www.filipomor.com

Weitere ähnliche Inhalte

Was ist angesagt?

MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39
MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39
MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39Falcão Brasil
 
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1Falcão Brasil
 
Building Embedded Linux Full Tutorial for ARM
Building Embedded Linux Full Tutorial for ARMBuilding Embedded Linux Full Tutorial for ARM
Building Embedded Linux Full Tutorial for ARMSherif Mousa
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Linaro
 
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15Falcão Brasil
 
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...Falcão Brasil
 
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40Falcão Brasil
 
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1Falcão Brasil
 
Handebol Defesa Individual
Handebol Defesa IndividualHandebol Defesa Individual
Handebol Defesa Individualpathylinda
 
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3Falcão Brasil
 
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...Falcão Brasil
 
Q4.11: ARM Architecture
Q4.11: ARM ArchitectureQ4.11: ARM Architecture
Q4.11: ARM ArchitectureLinaro
 
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3Falcão Brasil
 
Comando de Operações Especiais
Comando de Operações EspeciaisComando de Operações Especiais
Comando de Operações EspeciaisFalcão Brasil
 
001 linux revision
001 linux revision001 linux revision
001 linux revisionSherif Mousa
 
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1Falcão Brasil
 

Was ist angesagt? (20)

Barra do lenço monica-tomas
Barra do lenço monica-tomasBarra do lenço monica-tomas
Barra do lenço monica-tomas
 
MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39
MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39
MANUAL DE CAMPANHA INSTALAÇÕES NA ZONA DE COMBATE C 5-39
 
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES AEROMÓVEIS IP 90-1
 
Building Embedded Linux Full Tutorial for ARM
Building Embedded Linux Full Tutorial for ARMBuilding Embedded Linux Full Tutorial for ARM
Building Embedded Linux Full Tutorial for ARM
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15
MANUAL DE CAMPANHA COMPANHIA DE COMANDO E APOIO C 7-15
 
Voleibol.docx
Voleibol.docxVoleibol.docx
Voleibol.docx
 
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...
Caderno de Instrução de Treinamento Rústico Operacional - Cross Operacional (...
 
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40
MANUAL DE CAMPANHA TÉCNICA DE TIRO DE ARTILHARIA DE CAMPANHA VOLUME II C 6-40
 
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1
MANUAL DE CAMPANHA TIRO DAS ARMAS PORTÁTEIS 1ª PARTE - FUZIL C 23-1
 
Handebol Defesa Individual
Handebol Defesa IndividualHandebol Defesa Individual
Handebol Defesa Individual
 
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3
CADERNO DE INSTRUÇÃO MANEABILIDADE DE VIATURAS BLINDADAS CI 17-1/3
 
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...
CADERNO DE INSTRUÇÃO RECONHECIMENTO, ESCOLHA E OCUPAÇÃO DE POSIÇÃO (REOP) NO ...
 
Métodos de Treino
Métodos de TreinoMétodos de Treino
Métodos de Treino
 
Q4.11: ARM Architecture
Q4.11: ARM ArchitectureQ4.11: ARM Architecture
Q4.11: ARM Architecture
 
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
 
Comando de Operações Especiais
Comando de Operações EspeciaisComando de Operações Especiais
Comando de Operações Especiais
 
001 linux revision
001 linux revision001 linux revision
001 linux revision
 
Natação
NataçãoNatação
Natação
 
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1
INSTRUÇÕES PROVISÓRIAS OPERAÇÕES NA SELVA IP 72-1
 

Andere mochten auch

XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...Dafmet Ufpel
 
Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Bruno Abinader
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefastarcisioti
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14Leandro Almeida
 
Python-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonPython-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonBruno Abinader
 
Computação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosComputação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosbshecht
 
Linux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronLinux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronFrederico Madeira
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013Arthur Francisco Lorenzon
 
(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processosAnderson Lago
 
Marketing - Vantagem Relativa
Marketing - Vantagem RelativaMarketing - Vantagem Relativa
Marketing - Vantagem RelativaRafael Junqueira
 
Master Thesis Defense
Master Thesis DefenseMaster Thesis Defense
Master Thesis DefenseFilipo Mór
 

Andere mochten auch (20)

OpenMP Day1
OpenMP Day1OpenMP Day1
OpenMP Day1
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010  4ª ...
XVII SAMET - Dr. Gerson Cavalheiro [Programação com Open MP - 01.12.2010 4ª ...
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
OpenMP Day 2
OpenMP Day 2OpenMP Day 2
OpenMP Day 2
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
 
Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)Plasma Animations Overview (aka. Pimp my Plasmoids!)
Plasma Animations Overview (aka. Pimp my Plasmoids!)
 
Agenda tarefas
Agenda tarefasAgenda tarefas
Agenda tarefas
 
Lab so-abertos-unidade14
Lab so-abertos-unidade14Lab so-abertos-unidade14
Lab so-abertos-unidade14
 
Python-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o CythonPython-purple: Desenvolvendo bindings para Python usando o Cython
Python-purple: Desenvolvendo bindings para Python usando o Cython
 
Computação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticosComputação paralela utilizando OpenMP para aplicações matemáticos
Computação paralela utilizando OpenMP para aplicações matemáticos
 
OpenMP Day 3
OpenMP Day 3OpenMP Day 3
OpenMP Day 3
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Linux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o CronLinux - Agendando Tarefas com o Cron
Linux - Agendando Tarefas com o Cron
 
CUDA/Open CL
CUDA/Open CLCUDA/Open CL
CUDA/Open CL
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013
 
Grupo de Estudos de Softwares Livres
Grupo de Estudos de Softwares LivresGrupo de Estudos de Softwares Livres
Grupo de Estudos de Softwares Livres
 
(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos(08)inicializacao e gerencia_de_processos
(08)inicializacao e gerencia_de_processos
 
Marketing - Vantagem Relativa
Marketing - Vantagem RelativaMarketing - Vantagem Relativa
Marketing - Vantagem Relativa
 
Master Thesis Defense
Master Thesis DefenseMaster Thesis Defense
Master Thesis Defense
 

Ähnlich wie Desenvolvendo aplicações de uso geral para GPU com CUDA

Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Filipo Mór
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactMichel Alves
 
Fundamentos de Informática Gráfica
Fundamentos de Informática Gráfica Fundamentos de Informática Gráfica
Fundamentos de Informática Gráfica Carlos Campani
 
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB HarmonyDesenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB HarmonyDaniel Rodrigues de Sousa
 
05PlacasdeVideoDiogoJuarezWanderson.ppt
05PlacasdeVideoDiogoJuarezWanderson.ppt05PlacasdeVideoDiogoJuarezWanderson.ppt
05PlacasdeVideoDiogoJuarezWanderson.pptssuser595b1e1
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computadorFilipe Duarte
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1B Bellaver
 
00000007-Escolha Computadores modernos.pdf
00000007-Escolha Computadores modernos.pdf00000007-Escolha Computadores modernos.pdf
00000007-Escolha Computadores modernos.pdftexspire
 
Aula 11 – placas controladoras de vídeo (ii)
Aula 11 – placas controladoras de vídeo (ii)Aula 11 – placas controladoras de vídeo (ii)
Aula 11 – placas controladoras de vídeo (ii)Marcos Basilio
 
Processadores core i3 e amd
Processadores core i3 e amdProcessadores core i3 e amd
Processadores core i3 e amdMario Kleber
 
Placas GráFicas Realease1
Placas GráFicas Realease1Placas GráFicas Realease1
Placas GráFicas Realease1spidi_pt
 
Comparação de sistemas operativos cliente
Comparação de sistemas operativos clienteComparação de sistemas operativos cliente
Comparação de sistemas operativos clienteAndré Dias
 
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos""AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"Fabrício Pinheiro
 

Ähnlich wie Desenvolvendo aplicações de uso geral para GPU com CUDA (20)

Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Fundamentos de Informática Gráfica
Fundamentos de Informática Gráfica Fundamentos de Informática Gráfica
Fundamentos de Informática Gráfica
 
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB HarmonyDesenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
Desenvolvendo aplicações gráficas com a família PIC32MZ (DA) e ® MPLAB Harmony
 
Ferramentas Intel Android
Ferramentas Intel AndroidFerramentas Intel Android
Ferramentas Intel Android
 
05PlacasdeVideoDiogoJuarezWanderson.ppt
05PlacasdeVideoDiogoJuarezWanderson.ppt05PlacasdeVideoDiogoJuarezWanderson.ppt
05PlacasdeVideoDiogoJuarezWanderson.ppt
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computador
 
Blackfin
BlackfinBlackfin
Blackfin
 
Joao fcc-hardware-001
Joao fcc-hardware-001Joao fcc-hardware-001
Joao fcc-hardware-001
 
Chipset 780
Chipset 780Chipset 780
Chipset 780
 
Aula 02 : hardware.
Aula 02 : hardware.Aula 02 : hardware.
Aula 02 : hardware.
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1
 
00000007-Escolha Computadores modernos.pdf
00000007-Escolha Computadores modernos.pdf00000007-Escolha Computadores modernos.pdf
00000007-Escolha Computadores modernos.pdf
 
Hardware
HardwareHardware
Hardware
 
Aula 11 – placas controladoras de vídeo (ii)
Aula 11 – placas controladoras de vídeo (ii)Aula 11 – placas controladoras de vídeo (ii)
Aula 11 – placas controladoras de vídeo (ii)
 
Processadores core i3 e amd
Processadores core i3 e amdProcessadores core i3 e amd
Processadores core i3 e amd
 
Placas GráFicas Realease1
Placas GráFicas Realease1Placas GráFicas Realease1
Placas GráFicas Realease1
 
Comparação de sistemas operativos cliente
Comparação de sistemas operativos clienteComparação de sistemas operativos cliente
Comparação de sistemas operativos cliente
 
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos""AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"
"AMD - Phenom - O Verdadeiro Processamento Com 4 Núcleos"
 

Mehr von Filipo Mór

Programaçao C - Aula 2
Programaçao C - Aula 2Programaçao C - Aula 2
Programaçao C - Aula 2Filipo Mór
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1Filipo Mór
 
Uma Abordagem Paralela da Evolução Diferencial em GPU
Uma Abordagem Paralela da Evolução Diferencial em GPUUma Abordagem Paralela da Evolução Diferencial em GPU
Uma Abordagem Paralela da Evolução Diferencial em GPUFilipo Mór
 
Aula 6 - Redes de Computadores A - Endereçamento IP
Aula 6 - Redes de Computadores A - Endereçamento IPAula 6 - Redes de Computadores A - Endereçamento IP
Aula 6 - Redes de Computadores A - Endereçamento IPFilipo Mór
 
Aula Especial - Redes de Computadores A - Sockets
Aula Especial - Redes de Computadores A - SocketsAula Especial - Redes de Computadores A - Sockets
Aula Especial - Redes de Computadores A - SocketsFilipo Mór
 
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.Filipo Mór
 
Auditoria e Segurança em TI - Aula 4
Auditoria e Segurança em TI - Aula 4Auditoria e Segurança em TI - Aula 4
Auditoria e Segurança em TI - Aula 4Filipo Mór
 
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.Filipo Mór
 
Auditoria e Segurança em TI - Aula 3
Auditoria e Segurança em TI - Aula 3Auditoria e Segurança em TI - Aula 3
Auditoria e Segurança em TI - Aula 3Filipo Mór
 
Aula 1 - Redes de Computadores A - Conceitos Básicos.
Aula 1 - Redes de Computadores A - Conceitos Básicos.Aula 1 - Redes de Computadores A - Conceitos Básicos.
Aula 1 - Redes de Computadores A - Conceitos Básicos.Filipo Mór
 
Aula 1 - Conceitos de TI e PDTI
Aula 1 - Conceitos de TI e PDTIAula 1 - Conceitos de TI e PDTI
Aula 1 - Conceitos de TI e PDTIFilipo Mór
 
Aula 12 - Gestão do Conhecimento
Aula 12 - Gestão do ConhecimentoAula 12 - Gestão do Conhecimento
Aula 12 - Gestão do ConhecimentoFilipo Mór
 
Aula 11 - Terceirização em TI
Aula 11 - Terceirização em TIAula 11 - Terceirização em TI
Aula 11 - Terceirização em TIFilipo Mór
 
Aula 10 - Acompanhamento de Projetos
Aula 10 - Acompanhamento de ProjetosAula 10 - Acompanhamento de Projetos
Aula 10 - Acompanhamento de ProjetosFilipo Mór
 
Aula 9 - Controle de Atividades e Custos
Aula 9 - Controle de Atividades e CustosAula 9 - Controle de Atividades e Custos
Aula 9 - Controle de Atividades e CustosFilipo Mór
 
Aula 8 - Técnicas de Negociação e Gestão de RH
Aula 8 - Técnicas de Negociação e Gestão de RHAula 8 - Técnicas de Negociação e Gestão de RH
Aula 8 - Técnicas de Negociação e Gestão de RHFilipo Mór
 
Aula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoAula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoFilipo Mór
 
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TI
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TIAula 6 - O Processo Decisório e a Inteligência Competitiva de TI
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TIFilipo Mór
 
Aula 5 - A TI nas Organizações
Aula 5 - A TI nas OrganizaçõesAula 5 - A TI nas Organizações
Aula 5 - A TI nas OrganizaçõesFilipo Mór
 
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...Filipo Mór
 

Mehr von Filipo Mór (20)

Programaçao C - Aula 2
Programaçao C - Aula 2Programaçao C - Aula 2
Programaçao C - Aula 2
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Uma Abordagem Paralela da Evolução Diferencial em GPU
Uma Abordagem Paralela da Evolução Diferencial em GPUUma Abordagem Paralela da Evolução Diferencial em GPU
Uma Abordagem Paralela da Evolução Diferencial em GPU
 
Aula 6 - Redes de Computadores A - Endereçamento IP
Aula 6 - Redes de Computadores A - Endereçamento IPAula 6 - Redes de Computadores A - Endereçamento IP
Aula 6 - Redes de Computadores A - Endereçamento IP
 
Aula Especial - Redes de Computadores A - Sockets
Aula Especial - Redes de Computadores A - SocketsAula Especial - Redes de Computadores A - Sockets
Aula Especial - Redes de Computadores A - Sockets
 
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
Aula 4 - Redes de Computadores A - Camadas Modelos TCP/IP e OSI. Camada Física.
 
Auditoria e Segurança em TI - Aula 4
Auditoria e Segurança em TI - Aula 4Auditoria e Segurança em TI - Aula 4
Auditoria e Segurança em TI - Aula 4
 
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
 
Auditoria e Segurança em TI - Aula 3
Auditoria e Segurança em TI - Aula 3Auditoria e Segurança em TI - Aula 3
Auditoria e Segurança em TI - Aula 3
 
Aula 1 - Redes de Computadores A - Conceitos Básicos.
Aula 1 - Redes de Computadores A - Conceitos Básicos.Aula 1 - Redes de Computadores A - Conceitos Básicos.
Aula 1 - Redes de Computadores A - Conceitos Básicos.
 
Aula 1 - Conceitos de TI e PDTI
Aula 1 - Conceitos de TI e PDTIAula 1 - Conceitos de TI e PDTI
Aula 1 - Conceitos de TI e PDTI
 
Aula 12 - Gestão do Conhecimento
Aula 12 - Gestão do ConhecimentoAula 12 - Gestão do Conhecimento
Aula 12 - Gestão do Conhecimento
 
Aula 11 - Terceirização em TI
Aula 11 - Terceirização em TIAula 11 - Terceirização em TI
Aula 11 - Terceirização em TI
 
Aula 10 - Acompanhamento de Projetos
Aula 10 - Acompanhamento de ProjetosAula 10 - Acompanhamento de Projetos
Aula 10 - Acompanhamento de Projetos
 
Aula 9 - Controle de Atividades e Custos
Aula 9 - Controle de Atividades e CustosAula 9 - Controle de Atividades e Custos
Aula 9 - Controle de Atividades e Custos
 
Aula 8 - Técnicas de Negociação e Gestão de RH
Aula 8 - Técnicas de Negociação e Gestão de RHAula 8 - Técnicas de Negociação e Gestão de RH
Aula 8 - Técnicas de Negociação e Gestão de RH
 
Aula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoAula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de Planejamento
 
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TI
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TIAula 6 - O Processo Decisório e a Inteligência Competitiva de TI
Aula 6 - O Processo Decisório e a Inteligência Competitiva de TI
 
Aula 5 - A TI nas Organizações
Aula 5 - A TI nas OrganizaçõesAula 5 - A TI nas Organizações
Aula 5 - A TI nas Organizações
 
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...
Parallelization Strategies for Implementing Nbody Codes on Multicore Architec...
 

Kürzlich hochgeladen

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdfBlendaLima1
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioDomingasMariaRomao
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 

Kürzlich hochgeladen (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 

Desenvolvendo aplicações de uso geral para GPU com CUDA

  • 1. Filipo Novo Mór Desenvolvendo aplicações de uso geral para GPU com CUDA. Mini-curso 17 de Outubro de 2016 Semana Acadêmica Faculdade SENAC Porto Alegre
  • 2. Agenda • Conceitos básicos • Um Pouco de História • O que é uma GPU? • Programação GPU CUDA • Exemplos • Alternativas a CUDA • Roadmap GPUs NVIDIA
  • 7. Um Pouco de História
  • 8. Um Pouco de História • Aceleradores gráficos. – Um “meio de campo” entre o processador e a saída de vídeo. • Alguns exemplos:
  • 9. Um Pouco de História • 1976: RCA Pixie (CDP1861) – Resolução de 62x128 (RCA Studio II)
  • 10. Um Pouco de História • 1977: Television Interface Adapter (TIA) 1A – Som, joysticks e tela – Animação por sprites
  • 11. Um Pouco de História • 1978: Motorola MC6845 – Monochrome and Color Display Adapter (MDA/CDA) – Base para IBM PC (1981) , Apple II e Tandy CoCo
  • 12. Um Pouco de História • 1982: Intel iSBX275 – Resolução 256x256 (8 cores) – Resolução 512x512 (monocromático) – 32MB – DMA
  • 13. Um Pouco de História • 1984: IBM EGA (Motorola 6845) – Resolução 640x350 (16 cores) – Paleta de 64 cores.
  • 14. Um Pouco de História • 1985: Fundação da Array Technology Inc (ATI) no Canadá por 3 imigrantes de Hong Kong. • Principais contribuições: – Color Emulation Card (16kb) – Consórcio VESA (Video Electronics Standards Association) – Série EGA Wonder (que levou ao VGA Wonder). – Série Rage (primeira com aceleração 3D) – Família Radeon • Comprada pela AMD em 2006.
  • 15. Um Pouco de História • 1992: Silicon Graphics Inc (SGI) lança o OpenGL 1.0, a partir da sua API proprietária IRIS GL (Integrated Raster Imaging System Graphical Library).
  • 16. Um Pouco de História … void drawBox(void) { int i; for (i = 0; i < 6; i++) { glBegin(GL_QUADS); glNormal3fv(&n[i][0]); glVertex3fv(&v[faces[i][0]][0]); glVertex3fv(&v[faces[i][1]][0]); glVertex3fv(&v[faces[i][2]][0]); glVertex3fv(&v[faces[i][3]][0]); glEnd(); } } …
  • 17. Um Pouco de História • Ao mesmo tempo, a Microsoft trabalhava na sua API gráfica, Direct3D. • John Carmack da ID Software (DOOM e Quake) criticou abertament a API 3D da MS. “…Direct-3D IM is a horribly broken API. It inflicts great pain and suffering on the programmers using it, without returning any significant advantages. I don't think there is ANY market segment that D3D is apropriate for, OpenGL seems to work just fine for everything from quake to softimage. …”
  • 18. Um Pouco de História • Quake foi portado para OpenGL, mas nunca para Direct 3D da Microsoft.
  • 19. Um Pouco de História • 1995: NVIDIA lança o NV1.
  • 20. Um Pouco de História • NVIDIA NV1 : – Quadratic Texture Mapping – QTM – DirectX foi lançado logo após o lançamento da placa, porém, usando rasterização por triangulos. – NVIDIA somente abandonou QTM no chip NV3.
  • 21. Um Pouco de História
  • 22. Um Pouco de História • 1999: GeForce 256 SDR - a primeira GPU David Kirk and Wen-mei Hwu
  • 23. Um Pouco de História • 1999: GeForce 256 SDR - a primeira GPU Grass Demo – NVIDIA Corporation, 1999
  • 24. O quê é uma GPU?
  • 25. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)
  • 26. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Recebe comandos e dados da CPU
  • 27. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Recebe informação no formato de triângulos;  Converte para formato inteligível pelo hardware;  Armazena essa informação na cache.
  • 28. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Vertex Shading Transform and Lighting  Define e posiciona os pixels em coordenadas 2D a partir dos objetos 3D.
  • 29. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Define os pixels nas regiões onde dois triângulos se encontram.
  • 30. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU) Chua Hock-Chuan, 2014
  • 31. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Determina a cor final de cada pixel.
  • 32. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Suaviza (mistura) as cores de áreas limitrofes e transparências.
  • 33. Host Interface Vertex Control VS / T&L Triangule Setup Raster Shader Raster Operation FBI Vertex Cache Texture Cache Frame Buffer Memory HOST (CPU)  Frame Buffer Interface – gerencia os acessos a Frame Buffer Memory.
  • 35. O quê é uma GPU? • Mas em 2006 a NVIDIA lançou uma nova arquitetura, a GeForce 8800, com uma nova estrutura. • Conjuntos de Processadores organizados em arrays.
  • 36. O quê é uma GPU?
  • 37. O quê é uma GPU? Závodszky, 2014 WARP
  • 38. O quê é uma GPU? Mohamed Zahran Quando blocos de threads são atribuídos a um multiprocessador, ele é dividido em unidades básicas de execução chamados WARPs.
  • 39. O quê é uma GPU? Taxonomia de Flynn Onde melhor se enquadra uma GPU?
  • 40. O quê é uma GPU? SIMT vs SIMD • Single Instruction, Multiple Register Sets: cada thread possui seu próprio conjunto de registradores, consequentemente, instruções podem processar dados diferentes em diferentes threads com execução simultânea. • Single Instruction, Multiple Addresses: cada thread pode realizar acessos a posições não contiguas da memória, dando assim maior flexibilidade ao programador. No entanto, esta é uma técnica insegura pois este tipo de acesso pode levar a perda de desempenho em função da serialização dos acessos a memória. • Single Instruction, Multiple Flow Paths: o controle de fluxo de diferentes threads paralelas pode divergir.
  • 42. • Utilizar opoder de processamento dos aceleradores gráficos para aplicações que não fossem gráficas era muito difícil! – Instruções e estruturas de dados deveriam se basear em primitivas gráficas, tais como triângulos ou políginos. • Mas a NVIDIA lançou CUDA em 2007. Compute Unified Device Architecture GPGPU Programação GPU com CUDA
  • 43. • Sobre o CUDA: – Permite que porções do código da aplicação sejam executados diretamente na GPU. • Extendendo a linguagem hospedeira: – C, C++, FORTRAN, etc. • Utilizando comandos C-like. • Exige grande conhecimento sobre a arquitetura do hardware. Programação GPU com CUDA
  • 44. Programação GPU com CUDA Arquitetura simplificada de uma GPU NVIDIA
  • 45. Programação GPU com CUDA • Transferência de dados entre CPU e GPU: – Barramento PCI Express. • Transferência de dados entre GPU e GPU: – SLI (GeForce): não disponível em CUDA. – GPU Direct – RDMA. Alan Gray, 2013
  • 46. Programação GPU com CUDA • RDMA: – Transferência direta entre a GPU e outro periférico compatível. Alan Gray, 2013
  • 47. Programação GPU com CUDA • GPU Direct (RDMA): – Transferência direta GPUs NVIDIA, 2013
  • 48. Programação GPU com CUDA O mundo é das threads! – Transferência direta GPUs
  • 49. Programação GPU com CUDA 0 1 2 3 … thread ID 4
  • 51. Programação GPU com CUDA • Memória Compartilhada 10x mais rápida que Memória Global.
  • 52. Programação GPU com CUDA Nitin Gupta, 2013  Threads paralelas acessando posições contiguas de memória = melhor desempenho!
  • 55. Os Desafios-Chave na Programação para GPUs • Transferência de dados entre CPU e GPU. • Acesso a memória. • Branch divergence. • Não existência de Recursão. Programação GPU com CUDA
  • 57. Hello, World! Programação GPU com CUDA Código de Jason Sanders, apresentado na GTC 2010.
  • 58. Hello, World! Programação GPU com CUDA Indica que a função será executada no device. O compilador nvcc separará código host do código device.
  • 59. Hello, World! Programação GPU com CUDA “<<< >>>” indica uma chamada a partir do host a uma função device (kernel).
  • 60. Indo um pouco adiante... Programação GPU com CUDA “add” será disparado pelo host e executado no device. Então, a, b e c devem apontar para a memória da GPU.
  • 61. Indo um pouco adiante... Programação GPU com CUDA • Ponteiros no código device apontam para memória da GPU: • Podem ser passados a partir do host e para o host. • O host não pode acessar a memória da GPU! • Ponteiros no código host apontam para memória da CPU: • Podem ser passados a partir do device e para o device. • O device não pode acessar a memória da CPU! • cudaMalloc(), cudaFree(), cudaMemcpy() • Similares a malloc(), free(), memcpy().
  • 63. Indo um pouco adiante... Programação GPU com CUDA • O código foi executado na GPU, mas… onde está o paralelismo??? • Vamos tornar nosso exemplo um pouco mais complexo: Soma de Vetores.
  • 64. Soma de Vetores Programação GPU com CUDA c[0] = a[0] + b[0]; Bloco 0 c[1] = a[1] + b[1]; Bloco 1 c[2] = a[2] + b[2]; Bloco 2 c[3] = a[3] + b[3]; Bloco 3
  • 67. Programação GPU com CUDA • Revisão! – Host = CPU – Device = GPU – __global__para declarar uma função device. – Passagem de parâmetros entre host e device. – Gerenciamento de memória básico: • cudaMalloc() • cudaMemcpy() • cudaFree() – Disparando kernels no device: • N cópias da função “add” • Utilizando blockIdx.x para identificar o índice do bloco de threads.
  • 68. Trabalhando com Threads. Programação GPU com CUDA • um Kernel CUDA pode ser executado em vários blocos de threads.
  • 70. Trabalhando com Threads e Blocos! Programação GPU com CUDA blockIdx.x = 2 blockDim.x = 6 threadIdx.x = 2 2 * 6 + 2 14
  • 71. Trabalhando com Threads e Blocos! Programação GPU com CUDA
  • 74. Programação GPU com CUDA • Revisão! – Qual a vantagem de se utilizar threads? • Ao contrário dos blocos, threads possuem mecanismos para comunicação e sincronização. – Porque threads e blocos? • Ocupação da GPU!
  • 75. Produto Escalar Vetorial Programação GPU com CUDA 𝑐 = 𝑎 ∙ 𝑏 𝑐 = 𝑎0, 𝑎1, 𝑎2, 𝑎3, 𝑎4 ∙ 𝑏0, 𝑏1, 𝑏2, 𝑏3, 𝑏4 𝑐 = 𝑎0 𝑏0 + 𝑎1 𝑏1 + 𝑎2 𝑏2 + 𝑎3 𝑏3 + 𝑎4 𝑏4
  • 78.
  • 79. Sincronismo e Comunicação entre Threads: Programação GPU com CUDA • __syncthreads()promove um encontro entre todas as threads do bloco. • No exemplo mostrado, evita uma condição de corrida.
  • 80.
  • 81.
  • 82.
  • 83. Um estudo de caso comparativo entre plataformas.  Problema de N-Corpos  Implementação serial tradicional.  Implementação OpenMP  Implementação CUDA. Programação GPU com CUDA
  • 84. Sobre o Problema de N-Corpos Características:  Cálculo da força entre todas as partículas.  Complexidade O(N2)  Energia no sistema deve ser constante.  O algoritmo de cálculo das forças demanda grande poder computacional com o crescimento de N.
  • 85. Implementação Serial Tradicional NAIVE! • Claramente N2 • Cada par de partículas é calculado duas vezes. • Aceleração deve ser ajustada ao final.
  • 86. Implementação Serial Tradicional • Segue sob domínio N2 , mas: • Cada par é comparado apenas uma vez. • Aceleração está OK ao final!
  • 87. Implementação OpenMP • Deve se basear na versão “naive”. • Perdemos o “/2”, mas ganhamos o “/p”! • OBS: agendamento estático parece ser muito mais rápido para este tipo de aplicação.
  • 88. Análise “naive” Serial 𝑛2 “smart” Serial 𝑛2 − 𝑛 2 for (i=0; i<N; i++) { for(j=i+1; j<N; j++) { printf(“*”); } printf(“n”); } ***** ***** ***** ***** ***** ≈ 𝒏 𝒏 − 𝟏 𝟐 OpenMP Parallel 𝑛2 𝑝
  • 90. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Global Memory Shared Memory Bank N = 15 K = 3
  • 91. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BARRIER Global Memory Shared Memory Bank Active Tasks Active Transfers
  • 92. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 Global Memory Shared Memory Bank Active Tasks Active Transfers
  • 93. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BARRIER Global Memory Shared Memory Bank Active Tasks Active Transfers
  • 94. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 4 5 Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 95. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BARRIER Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 96. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 7 8 Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 97. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BARRIER Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 98. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9 10 11 Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 99. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 BARRIER Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 100. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 12 13 14 Global Memory Shared Memory Bank Active Tasks Active Transfers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 101. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Global Memory Shared Memory Bank Active Tasks Active Transfers
  • 102. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Global Memory Shared Memory Bank
  • 103. Implementação CUDA Cálculo da força entre duas partículas.
  • 107. Análise C : custo da função CalculateForce. M : custo da transferência entre as memórias Global e Compartilhada. T : custo da transfer6encia entre as memórias da CPU e GPU.  Acesso a memória Compartilhada tende a ser até 100x mais rápido do que à memória Global. 𝑪 𝒏 𝟐 𝒑 + 𝟐𝑴𝒏 + 𝟐𝑻𝒏  Inicialmente, todos os elementos são transferidos da memória do Host para a memória do Device.  Cada thread é responsável por apenas uma partícula.  Existem (n/k) barreiras durante as sincronizações entre as memórias Compartilhada e Global.  A cada barreira, k elementos são transferidos para a memória Compartilhada por vez.  Ao final, todos os elementos constantes na memória Global são copiados de volta para a memória do Host.
  • 108. Resultados Experimentais Testing Environment:  Dell PowerEdge R610  2 Intel Xeon Quad-Core E5520 2.27 GHz Hyper-Threading  8 physical cores, 16 threads.  RAM 16GB  NVIDIA Tesla S2050  Ubuntu Server 10.0.4 LTS  GCC 4.4.3  CUDA 5.0 How much would it cost??? Version Cost Naive 0.49$ Smart 0.33$ OMP 0.08$ CUDA 0.05$  Amazon EC2:  General Purpose - m1.large plan  GPU Instances - g2.2xlarge plan
  • 114. Alternativas • OpenACC  Allinea  CRAY Inc  Edinburgh Parallel Computing Center  Georgia Tech  University of Houston  Indiana University  NVIDIA  Oak Ridge National Lab  The Portland Group Inc (PGI)  Rogue Wave  Sandia National Laboratory  Swiss National Supercomputer Center  Technical Universitat Dresden  Tokyo Institute of Technology (TiTech)  Utilização de diretivas (pragmas) para orientação do compilador, ao estilo OpenMP.  Promessa: rápida paralelização de código legado.  Concorrência: OpenMP 4.0 ?
  • 116. Alternativas • OpenACC (multiplicação de matrizes)  Aloca espaço na memória do device para os vetores A e B, antes da execução do kernel.  Copia os vetores A e B da memória do Host para a memória do Device, antes da execução do kernel.
  • 117. Alternativas • OpenACC (multiplicação de matrizes)  Aloca memória para o vetor C na memória do device, antes da execução do kernel.  Após a execução do kernel, copia os dados do vetor C da memória do device para a memória do host.
  • 118. Alternativas • OpenACC (multiplicação de matrizes)  Blocos com 16 threads cada.  Quantidade de blocos definida pela compilador. pgcc -Minfo=all -ta=nvidia:5.0,cc2x,time -acc -Minfo=accel -lm mmACC_v1_1.c -o mmACC11
  • 119. Alternativas • OpenMP 4.0 De acordo com o site da OpenMP, um esforço contínuo está sendo feito no sentido de unificar as plataformas. Neste contexto, aplicações OpenACC podem ser consideradas como beta testes de OpenMP 4.0.
  • 120. Alternativas • OpenMP 4.0 OpenMP 4.0 para GPU NVIDIA OpenACC para GPU NVIDIA
  • 122. Muito obrigado! Dúvidas? Comentários? Filipo Novo Mór www.filipomor.com