-
Notifications
You must be signed in to change notification settings - Fork 79
Gpu Final
Nas últimas aulas trabalhamos com GPU usando a biblioteca thrust e também kernels feitos diretamente em CUDA. Iremos finalizar este módulo com exercícios práticos de implementação. Nesta aula você deverá seguir duas instruções básicas
e
É claro que você pode consultar código que já escreveu, mas a ideia é evitar montar um programa Frankstein copiando pedaços de código que nem sempre se conectam da maneira correta. Queremos tentar compreender por completo cada linha de seu código e saber exatamente a razão dela estar onde está.
Iremos voltar a um exercício que fizemos nas aulas de multi-core: o cálculo do PI usando as técnicas de integração numérica e Monte Carlo.
Na aula 07-threads-I paralelizamos um código que fazia o cálculo do PI usando OpenMP. Neste primeiro exercício iremos converter aquele código para rodar em GPU. Você deverá
- portar o código em
pi-numeric-integration.cpppara GPU - comparar o tempo gasto para
num_steps = 1000000000. - comparar com sua implementação usando OpenMP
Na aula 10-reentrancia paralelizamos um código que usava sorteios aleatórios para calcular o PI. Neste exercício você deverá
- converter
pi_mc.cpara rodar em GPU - comparar o tempo gasto para
num_trials = 1000000000para o sequencial - fazer o mesmo para sua versão usando OpenMP
A geração de números aleatórios dentro de um kernel pode ser feita com a biblioteca cuRAND. Um exemplo simples de uso pode ser visto no arquivo rand.cu disponibilizado no repositório.