Opencl: Détermine le meilleur local_item_size

Mon code agit comme une multiplication masortingcielle 2d ( http://gpgpu-computing4.blogspot.de/2009/09/masortingx-multiplication-2-opencl.html ). Les dimensions des masortingces sont (1000 * 1000 et 10000 * 10000 et 100000 * 100000).

Mon matériel est: NVIDIA Corporation GM204 [GeForce GTX 980] (MAX_WORK_GROUP_SIZES: 1024 1024 64).

La question est:

Quelle est la meilleure taille que je peux utiliser pour local_item_size?

size_t local_item_size[2], global_item_size[2]; global_item_size[0] = number_of_points; global_item_size[1] = number_of_points; local_item_size[0] = 10; local_item_size[1] = 10; 

Merci d’avance,

sur les cartes nvidia, vous devez utiliser des multiplications de 32 comme nombre total de threads dans un groupe de travail (donc 8 * 8 devraient suffire). La taille de travail globale doit être un multiple de la taille de travail locale dans chaque dimension. Elle doit donc également être modifiée.

Il faudra peut-être aussi modifier le code du kernel pour gérer les valeurs hors limites (il peut y avoir plus d’éléments de travail que de données).

Notez que si vous ne spécifiez pas la taille du groupe de travail local (par exemple, passez null), le pilote la choisira automatiquement. Il n’est pas garanti que la taille choisie soit la meilleure, mais cela vaut la peine d’essayer.