Aula 3: Seu Primeiro Kernel — __global__ e <<<>>>
Até agora a GPU era uma ideia — milhares de trabalhadores minúsculos esperando por uma tarefa; agora vamos dar a eles o primeiro trabalho. O código que cada trabalhador da GPU executa é chamado de kernel: uma pequena função que todas as threads executam juntas, cada uma com seu próprio dado. Você a
Um kernel é como uma receita que você fixa no quadro de uma cozinha gigante. Você (a CPU) não cozinha — você só fixa a receita e grita <<<2 mesas, 4 cozinheiros>>>. Os oito cozinheiros começam a trabalhar, e você vai fazer outra coisa sem esperar que eles terminem.
- __global__
- Marca um kernel: uma função que corre na GPU e é lançada a partir da CPU. Sempre retorna void.
- configuração de lançamento <<<>>>
- A sintaxe kernel<<<numBlocks, threadsPerBlock>>>(args) que define quantos blocks e quantas threads por block.
- grid e block
- Um block é um grupo de threads; um grid é o conjunto de blocks de um lançamento. Total de threads = numBlocks vezes threadsPerBlock.
- lançamento assíncrono
- A CPU não espera o kernel terminar; ela continua imediatamente. É preciso sincronização explícita antes de ler os resultados.