SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Data preprocessing
Data preprocessingData preprocessing
Data preprocessingsuganmca14
 
Tipos de Sistemas de Informação Resumo
Tipos de Sistemas de Informação ResumoTipos de Sistemas de Informação Resumo
Tipos de Sistemas de Informação ResumoRobson Santos
 
Lecture 8: Decision Trees & k-Nearest Neighbors
Lecture 8: Decision Trees & k-Nearest NeighborsLecture 8: Decision Trees & k-Nearest Neighbors
Lecture 8: Decision Trees & k-Nearest NeighborsMarina Santini
 
The Evolution of Data Science
The Evolution of Data ScienceThe Evolution of Data Science
The Evolution of Data ScienceKenny Daniel
 
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)Machine learning basics using trees algorithm (Random forest, Gradient Boosting)
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)Parth Khare
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data ScienceNiko Vuokko
 
Spectral clustering
Spectral clusteringSpectral clustering
Spectral clusteringSOYEON KIM
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquicorosimaracorsino
 
Banco de Dados 1 - Semana 05 b
Banco de Dados 1 - Semana 05 bBanco de Dados 1 - Semana 05 b
Banco de Dados 1 - Semana 05 bEder Samaniego
 
Timeline Evolução do Banco de Dados
Timeline Evolução do Banco de DadosTimeline Evolução do Banco de Dados
Timeline Evolução do Banco de DadosMarylly Silva
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 

Mais procurados (14)

Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
Tipos de Sistemas de Informação Resumo
Tipos de Sistemas de Informação ResumoTipos de Sistemas de Informação Resumo
Tipos de Sistemas de Informação Resumo
 
Lecture 8: Decision Trees & k-Nearest Neighbors
Lecture 8: Decision Trees & k-Nearest NeighborsLecture 8: Decision Trees & k-Nearest Neighbors
Lecture 8: Decision Trees & k-Nearest Neighbors
 
The Evolution of Data Science
The Evolution of Data ScienceThe Evolution of Data Science
The Evolution of Data Science
 
Data science
Data scienceData science
Data science
 
NOÇÕES DE ELETROSTÁTICA
NOÇÕES DE ELETROSTÁTICANOÇÕES DE ELETROSTÁTICA
NOÇÕES DE ELETROSTÁTICA
 
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)Machine learning basics using trees algorithm (Random forest, Gradient Boosting)
Machine learning basics using trees algorithm (Random forest, Gradient Boosting)
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Eda sri
Eda sriEda sri
Eda sri
 
Spectral clustering
Spectral clusteringSpectral clustering
Spectral clustering
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquico
 
Banco de Dados 1 - Semana 05 b
Banco de Dados 1 - Semana 05 bBanco de Dados 1 - Semana 05 b
Banco de Dados 1 - Semana 05 b
 
Timeline Evolução do Banco de Dados
Timeline Evolução do Banco de DadosTimeline Evolução do Banco de Dados
Timeline Evolução do Banco de Dados
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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"
 

Mais de 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
 

Mais de 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...
 

Último

Power Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilPower Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilMariaHelena293800
 
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxEBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxIlda Bicacro
 
Química-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxQuímica-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxKeslleyAFerreira
 
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdfUFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdfManuais Formação
 
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdfCarinaSofiaDiasBoteq
 
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdfUFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdfManuais Formação
 
"Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande""Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande"Ilda Bicacro
 
FUNDAMENTOS DA PSICOPEDAGOGIA - material
FUNDAMENTOS DA PSICOPEDAGOGIA - materialFUNDAMENTOS DA PSICOPEDAGOGIA - material
FUNDAMENTOS DA PSICOPEDAGOGIA - materialDouglasVasconcelosMa
 
Gramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdfGramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdfKelly Mendes
 
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptxnelsontobontrujillo
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfAnaAugustaLagesZuqui
 
Testes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfTestes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfCsarBaltazar1
 
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxSlides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxLuizHenriquedeAlmeid6
 
APH- Avaliação de cena , analise geral do ambiente e paciente.
APH- Avaliação de cena , analise geral do ambiente e paciente.APH- Avaliação de cena , analise geral do ambiente e paciente.
APH- Avaliação de cena , analise geral do ambiente e paciente.HandersonFabio
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfGisellySobral
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdfaulasgege
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja Mary Alvarenga
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAbdLuxemBourg
 
Aspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptxAspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptxprofbrunogeo95
 
Descrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteDescrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteLeonel Morgado
 

Último (20)

Power Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilPower Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantil
 
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptxEBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
EBPAL_Serta_Caminhos do Lixo final 9ºD (1).pptx
 
Química-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxQuímica-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptx
 
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdfUFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
UFCD_8291_Preparação e confeção de peixes e mariscos_índice.pdf
 
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
425416820-Testes-7º-Ano-Leandro-Rei-Da-Heliria-Com-Solucoes.pdf
 
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdfUFCD_10659_Ficheiros de recursos educativos_índice .pdf
UFCD_10659_Ficheiros de recursos educativos_índice .pdf
 
"Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande""Nós Propomos! Escola Secundária em Pedrógão Grande"
"Nós Propomos! Escola Secundária em Pedrógão Grande"
 
FUNDAMENTOS DA PSICOPEDAGOGIA - material
FUNDAMENTOS DA PSICOPEDAGOGIA - materialFUNDAMENTOS DA PSICOPEDAGOGIA - material
FUNDAMENTOS DA PSICOPEDAGOGIA - material
 
Gramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdfGramática - Texto - análise e construção de sentido - Moderna.pdf
Gramática - Texto - análise e construção de sentido - Moderna.pdf
 
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdf
 
Testes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfTestes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdf
 
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxSlides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
 
APH- Avaliação de cena , analise geral do ambiente e paciente.
APH- Avaliação de cena , analise geral do ambiente e paciente.APH- Avaliação de cena , analise geral do ambiente e paciente.
APH- Avaliação de cena , analise geral do ambiente e paciente.
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdf
 
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
1. Aula de sociologia - 1º Ano - Émile Durkheim.pdf
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
 
Aspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptxAspectos históricos da educação dos surdos.pptx
Aspectos históricos da educação dos surdos.pptx
 
Descrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteDescrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamente
 

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