tipos sinonimo recursivo recursividad recursiva programacion persona ejemplos algoritmo recursion cuda

recursion - sinonimo - ¿CUDA apoya la recursión?



recursivo sinonimo (11)

¿CUDA apoya la recursión?



CUDA 3.1 es compatible con la recursión


Claro que sí, pero requiere la arquitectura de Kepler para hacerlo. Echa un vistazo a su último ejemplo en el clásico de clasificación rápida.

http://blogs.nvidia.com/2012/09/how-tesla-k20-speeds-up-quicksort-a-familiar-comp-sci-code/

Por lo que yo sé, solo el último Kepler GK110 admite el paralelismo dinámico, que permite este tipo de llamada recursiva y el engendramiento de nuevos hilos dentro del kernel. Antes de Kepler GK110, no fue posible. Y tenga en cuenta que no toda la arquitectura Kepler es compatible con esto, solo GK110 lo hace.

Si necesita recurrencia, probablemente necesite el Tesla K20. No estoy seguro si Fermi lo apoya, nunca lo lea. : / Pero Kepler seguro sí. =)


Cualquier algoritmo recursivo se puede implementar con una pila y un bucle. Es mucho más doloroso, pero si realmente necesitas recursividad, esto puede funcionar.


En la versión CUDA 4.1, CUDA admite la recursión solo para la función __device__ pero no para la función __global__.


Intenté recientemente en mi PC con una GPU NVIDIA con capacidad de computación 1.1. Dice que la recurrencia aún no es compatible. Así que no tiene nada que ver con el tiempo de ejecución, pero el hardware mismo


Lo hace en hardware NVIDIA que admite la capacidad de cálculo 2.0 y CUDA 3.1:

Las nuevas funciones de idioma agregadas a CUDA C / C ++ incluyen :

La compatibilidad con los punteros de función y la recursividad hacen que sea más fácil transferir muchos algoritmos existentes a las GPU de Fermi.

http://developer.nvidia.com/object/cuda_3_1_downloads.html

Indicadores de función: http://developer.download.nvidia.com/compute/cuda/sdk/website/CUDA_Advanced_Topics.html#FunctionPointers

Recursividad: no puedo encontrar una muestra de código en el sitio web de NVIDIA, pero en el forum alguien publica esto:

__device__ int fact(int f) { if (f == 0) return 1; else return f * fact(f - 1); }


Sí, es compatible con la versión real. Pero a pesar de que es posible ejecutar funciones recursivas, debe tener en cuenta que la asignación de memoria de la pila de ejecución no se puede predecir (la función recursiva se debe ejecutar para conocer la profundidad real de la recursión), por lo que su pila podría resultar no ser suficiente para sus propósitos y podría necesitar un incremento manual del tamaño de pila predeterminado


Sí, mira la Guía de programación de NVIDIA CUDA :

las funciones del dispositivo solo son compatibles con la recursión en el código del dispositivo compilado para dispositivos de capacidad informática 2.0.

Necesitas una tarjeta Fermi para usarlos.


Si su algoritmo implica muchas recurrencias, soporte o no, no está diseñado para GPU, rediseñe sus algoritmos o consiga una mejor CPU, de cualquier forma será mejor (apuesto en muchos casos, mejor las maginidades) y luego haga repeticiones en GPUs


Solo después de la capacidad de cómputo 2.0 en dispositivos compatibles