Como atribuir tarefas ao GPU

3

Encontrei uma referência do computerbase.de ( link em alemão) onde em um caso uma tarefa (aqui transcodificação de vídeo) é feita pela CPU e no outro caso pela GPU (integrada):

Como posso atribuir uma tarefa (por exemplo, transcodificação de vídeo) explicitamente à GPU no linux?

    
por student 18.07.2013 / 21:28

1 resposta

3

Acho que a melhor maneira de usar seus núcleos na GPU é usar o OpenCL . A ideia é bastante simples. Você escreve um kernel (um pequeno bloco de código, onde você pode usar somente código C básico sem bibliotecas). Por exemplo, se você quiser filtrar um quadro, terá que fazer alguns cálculos em cada pixel e é isso que o código do kernel fará.

Então você tem que compilar o kernel, alocar a memória na GPU e copiar os dados da memória principal lá. Você também tem que alocar memória para o resultado. Então você cria threads e envia o kernel para execução na GPU (eu acho que você também pode usar núcleos de CPU e GPU de uma vez para executar kernels). Então, cada thread executa o kernel uma vez para cada pixel. Depois de copiar o resultado de volta para a memória principal e continuar trabalhando com a CPU.

Esta é a maneira mais simples de explicar isso, mas ainda há um milhão de detalhes que você precisa saber, então é melhor começar a aprender;) Você pode começar com o site do desenvolvedor do fabricante da placa gráfica. Lá você encontrará as bibliotecas e tutoriais sobre como começar a desenvolver no OpenCL.

    
por 19.07.2013 / 00:10

Tags