J'ai joué avec OpenCL récemment, et je suis capable d'écrire de simples noyaux qui utilisent uniquement la mémoire globale. Maintenant, je voudrais commencer à utiliser de la mémoire locale, mais je n'arrive pas à comprendre comment l'utiliser get_local_size()
et get_local_id()
pour calculer un "morceau" de sortie à la fois.
Par exemple, disons que j'ai voulu convertir Apple OpenCL exemple Hello World noyau à quelque chose de les utilisations de la mémoire locale. Comment le feriez-vous? Voici le noyau d'origine de la source:
__kernel square(
__global float *input,
__global float *output,
const unsigned int count)
{
int i = get_global_id(0);
if (i < count)
output[i] = input[i] * input[i];
}
Si cet exemple ne peut pas être facilement converti en quelque chose qui montre comment faire pour que l'utilisation de la mémoire locale, tout autre exemple simple permettra de le faire.
Merci!