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.