Criando CUDA Hello World
O objetivo deste artigo, é iniciar o programador, no desenvolvimento de aplicações usando GPU da NVIDIA.
No artigo anterior, eu ensinei a instalar o pacote cuda.
Agora iremos desenvolver o nosso famoso hello world.
Primeiramente, precisamos instalar um outro pacote adicional:
apt install nvidia-cuda-toolkit
Este pacote instala o compilador do cuda “nvcc”, que gera o binário para o GPU.
Criando o Hello World
Neste exemplo não faremos muita coisa, a não ser chamar nossa primeira rotina que irá processar no GPU.
GIT
O projeto esta no GIT e pode ser baixado aqui:
https://github.com/marcelomaurin/CUDA_HELLO
Baixando o Projeto
Para baixar o projeto digite:
git clone https://github.com/marcelomaurin/CUDA_HELLO.git
Compilando o projeto
Para compilar o projeto digite o seguinte comando:
make
Segue o print screen da tela
Agora iremos rodar o projeto.
Analisando o código
Agora vamos dar uma olhada no fonte:
#include <stdio.h>
#include "cuda_runtime.h"
//Kernel
__global__
void hello_world(void){
printf("hello\n");
}
int main(){
printf("Chamando hello!\n");
hello_world << <3, 10>> >();
cudaDeviceSynchronize();
return 0;
}
Este pequeno código, chama o hello_world, iniciando 30 threads, onde chama 3 blocos (SMs), com 10 threads cada.
O comando cudaDeviceSynchronize, realiza a sincronização entre o kernel do linux e as threads do cuda.
Lembrando que o valor máximo dado por thread é 1024 por bloco SM.
Referências
https://cuda-tutorial.readthedocs.io/en/latest/tutorials/tutorial01/
Documentação NVIDIA da API runtime
https://docs.nvidia.com/cuda/cuda-runtime-api/modules.html#modules