58 votes

CUDA prend-il en charge la récursivité?

CUDA prend-il en charge la récursivité?

49voto

Stringer Points 7273

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);
}

13voto

Matias Valdenegro Points 16473

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.

9voto

ttsiodras Points 2355

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 .

7voto

username_4567 Points 989

Dans la version 4.1 de CUDA, CUDA ne prend en charge la récursivité que pour la fonction __device__, mais pas pour la fonction __global__.

5voto

Arturo Garcia Points 41

Seulement après la capacité de calcul 2.0 sur les appareils compatibles

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X