El término divergencia de hilos se usa en CUDA; según entiendo, es una situación en la que se asignan diferentes hilos para realizar tareas diferentes y esto da como resultado un gran golpe de rendimiento.divergencia de hilo de Openmp?
Me preguntaba, ¿hay alguna penalización similar por hacer esto en openmp? Por ejemplo, supongamos que tengo un procesador de 6 núcleos y un programa con 6 hilos. Si tengo un condicional que hace que 3 hilos realicen una determinada tarea, y luego los otros tres hilos realizan una tarea completamente diferente, ¿habrá un gran golpe de rendimiento? Supongo que, en esencia, es como usar openmp para hacer MIMD.
Básicamente, estoy escribiendo un programa con openmp y CUDA. Quiero dos hilos para ejecutar un núcleo CUDA mientras que los otros sobrantes ejecutan código C. Gracias.
Simplemente curioso, ¿cómo podría uno hacer esto en OpenMP? Sé que ya has respondido tu pregunta, pero sería bueno ver un fragmento de código. –
Esto no está relacionado con el tema, pero antes de que su código de host sea demasiado complicado, es posible que no necesite más de un hilo de CPU para CUDA, con CUDA 4.0 y posterior programación de múltiples GPUs se puede hacer desde un solo hilo de host, tiene que hacer un trabajo paralelo en el lado del host, es posible que los subprocesos múltiples no agreguen nada más que complejidad. Si tiene que hacer un trabajo paralelo en la CPU, podría usar un hilo de la CPU para CUDA y el resto para hacer el trabajo de la CPU en paralelo. – harrism