Kernel de computação - Compute kernel
Na computação , um kernel de computação é uma rotina compilada para aceleradores de alto rendimento (como unidades de processamento gráfico (GPUs), processadores de sinal digital (DSPs) ou matrizes de portas programáveis em campo (FPGAs)), separados, mas usados por um programa principal ( normalmente em execução em uma unidade de processamento central ). Eles às vezes são chamados de sombreadores de computação , compartilhando unidades de execução com sombreadores de vértice e pixel shaders em GPUs, mas não estão limitados à execução em uma classe de dispositivo ou APIs gráficas .
Descrição
Os kernels de computação correspondem aproximadamente a loops internos ao implementar algoritmos em linguagens tradicionais (exceto que não há operação sequencial implícita) ou ao código passado para iteradores internos .
Eles podem ser especificados por uma linguagem de programação separada , como " OpenCL C " (gerenciado pela API OpenCL ), como " sombreadores de computação " escritos em uma linguagem de sombreamento (gerenciado por uma API gráfica como OpenGL ), ou embutidos diretamente no código do aplicativo escrito em uma linguagem de alto nível , como no caso de C ++ AMP .
Processamento vetorial
Este paradigma de programação mapeia bem para processadores de vetor : existe uma suposição de que cada invocação de um kernel dentro de um lote é independente, permitindo a execução paralela de dados . No entanto, as operações atômicas às vezes podem ser usadas para sincronização entre elementos (para trabalho interdependente), em alguns cenários. As invocações individuais recebem índices (em 1 ou mais dimensões) a partir dos quais o endereçamento arbitrário dos dados do buffer pode ser executado (incluindo operações de coleta de dispersão ), desde que a suposição de não sobreposição seja respeitada.
API Vulkan
A API Vulkan fornece a representação SPIR-V intermediária para descrever ambos os Shaders gráficos e Kernels de computação, de maneira independente de linguagem e máquina . A intenção é facilitar a evolução da linguagem e fornecer uma capacidade mais natural de alavancar os recursos de computação da GPU, em linha com os desenvolvimentos de hardware, como Arquitetura de Memória Unificada e Arquitetura de Sistema Heterogêneo . Isso permite uma cooperação mais próxima entre uma CPU e GPU.
Veja também
- Kernel (processamento de imagem)
- DirectCompute
- CUDA
- OpenMP
- OpenCL
- SPIR-V
- SYCL
- Metal (API)
- GPGPU
- Processador vetorial
- Xeon Phi
- RISC-V § Extensão vetorial
- Processador de sinal digital
- Matriz de portas programáveis em campo
- Acelerador AI
- Manycore
- Processamento de fluxo
- Computador para operações com funções