Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programação GPU: CUDA (CUDA (import numpy as ns
from timeit import…
Programação GPU: CUDA
antes OpenGL: especificação livre para criação de gráficos; programação complicada e fácil de gerar erros
para eliminar essas dificuldades, a NVIDIA criou a plataforma CUDA, baseada na linguagens C/C++
hoje, as principais linguagens já oferecem bibliotecas CUDA
o código em python apresenta um programa que realiza a soma entre dois arrays com 30 milhões de posições
-
import numpy as ns
from timeit import default_timer as timer
from numba import vectorizevectorize (["float32(float32, float32)"], target="cuda")
def somaVetor(a, b):
return a + bdef main():
N=30000000
A=np.ones(N, dtype=np.float32)
B=np.ones(N, dtype=np.float32)
C=np.zeros(N, dtype=np.float32)C=somaVetor(A,B)if --name-- == '--main--':
main()
-
usando o vectorize(), a função manipula as entradas como escalares em múltiplos núcleos ao invés de um array sequencial
para fins de aferição de desempenho, esse programa foi executado 10x em um notebook Intel I7, 16GB de memória e uma GPU Intel HD Graphics 620
média CPU = 18 segundos; média GPU = 0,83 segundos (830 milissegundos)
desde a criação da computação, os processadores operavam como um único núcleo programável; códigos executados sequencialmente
demanda por maior desempenho: pipeline, threads, processadores em paralelo, vários núcleos (cores) em um único chip, etc
-
- GPU e programação paralela
GPU: encarregada pelo processamento de cada pixel, gerando assim a imagem proveniente de um alto número de operações
-
a GPU se torna um ambiente onde pode ocorrer grande paralelização de processamento de dados, apresentando melhor no desempenho
A figura demonstra que parte do código de uma aplicação pode ser executada de forma paralela em um GPU
-
embora a porcentagem de código executada em GPU seja menor, o aumento de performance é significativo comparado ao desempenho do código executado inteiramente de forma sequencial