CUDA prend-il en charge la récursivité?
Réponses
Trop de publicités?Il n'sur du matériel NVIDIA supportant de calcul de la capacité de 2.0 et CUDA 3.1:
Les nouvelles fonctionnalités de langage ajouté à CUDA C / C++ comprennent:
Soutien à la fonction les pointeurs et la récursivité de le rendre plus facile au port de nombreux algorithmes existants pour Gpu Fermi
http://developer.nvidia.com/object/cuda_3_1_downloads.html
Pointeurs de fonction: http://developer.download.nvidia.com/compute/cuda/sdk/website/CUDA_Advanced_Topics.html#FunctionPointers
La récursivité: Je ne peux pas trouver un exemple de code sur le site web de NVIDIA, mais sur le forum quelqu'un poste:
__device__ int fact(int f)
{
if (f == 0)
return 1;
else
return f * fact(f - 1);
}
Oui, consultez le Guide de programmation de NVIDIA CUDA :
les fonctions de périphérique ne prennent en charge que la récursivité dans le code de périphérique compilé pour les périphériques de capacité de calcul 2.0.
Vous avez besoin d'une carte Fermi pour les utiliser.
Même si elle ne prend en charge que la récursivité pour des puces spécifiques, vous pouvez parfois vous en tirer avec une récursion "émulée": voyez comment j'ai utilisé la récursion à la compilation pour mon rayon Curseur CUDA .