CUDA – Trabalhando com Memória da placa de vídeo
Neste artigo irei apresentar como trabalhar com a memória da placa de vídeo, na lib CUDA da NVIDIA.
GIT
O exemplo deste projeto pode ser visto no git.
https://github.com/marcelomaurin/CUDA2
Código do projeto
Veremos a seguir o projeto do código, onde em seguida irei comentar o mesmo:
#include <stdio.h>
#include "cuda_runtime.h"
#define TAM_MAP 30
//Kernel
__global__
void projecao_x(int *p_param){
printf("video: %d\n",*p_param);
*p_param += 5; /*muda valor*/
}
int main(){
int valor;
valor = 10; /* declaração da variavel alocada no pc*/
cudaDeviceReset();
int *d_param; /*Declaracao da variavel alocado na placa de video*/
/*alocação de variaveis da placa de vídeos*/
cudaMalloc((void**)&d_param,sizeof(int)); /*aloca na cuda o tamanho de 1 inteiro*/
cudaMemcpy( d_param, &valor,
sizeof(int),
cudaMemcpyHostToDevice);
printf("Chamando hello!\n");
projecao_x << <1, 1>> >(d_param); /*Criação funcao do processador*/
cudaDeviceSynchronize();
cudaMemcpy( &valor, d_param,
sizeof(int),
cudaMemcpyDeviceToHost);
printf("pc:%d\n",valor);
cudaFree(d_param);
return 0;
}
O que faz o programa
O Programa acima cria uma variavel na placa de vídeo chamada d_param, que é atribuído valor 10 no Desktop.
Depois ao ser chamado a thread, e já na placa de vídeo, seu valor é modificado.
Por fim é transferida para a memória do desktop, e em seguida apresentada no desktop.
Funções importantes
cudaMalloc – É responsável pela criação da variavel na placa de vídeo.
cudaMemcpy – É responsável por copiar os dados de um espaço para outro. Nos dois sentidos DESKTOP -> VIDEO, e VIDEO -> Desktop.
Bom pessoal, espero que tenham gostado deste artigo.
Os próximos espero serem mais emocionantes.
Vida longa e prospera a todos.