Es posible lanzar dos kernels que hacer tareas independientes simultáneamente. Por ejemplo si tengo este código Cuda

//host and device initialization
.......
.......

//launch kernel1
myMethod1 <<<.... >>> (params);

//launch kernel2
myMethod2 <<<.....>>> (params);

Suponiendo que estos kernels son independientes, hay una instalación para el lanzamiento de ellas, al mismo tiempo, la asignación de unas rejillas/bloques para cada uno. ¿CUDA/OpenCL tiene esta disposición.

  • Por la simultánea, ¿quieres decir que su ejecución se sincronizan o simplemente superponiendo?
InformationsquelleAutor cudadev | 2010-06-14

3 Comentarios

  1. 6

    Sólo los dispositivos con CUDA capacidad de cálculo 2.0 y mejor (es decir, de Fermi) puede soportar múltiples simultáneas núcleo de las ejecuciones. Consulte la sección 3.2.6.3 de la CUDA 3.0 guía de programación, que establece:

    Algunos dispositivos de la capacidad de cálculo 2.0
    puede ejecutar múltiples núcleos
    al mismo tiempo. Aplicaciones de mayo de consulta
    esta capacidad llamando
    cudaGetDeviceProperties() y la comprobación de
    el concurrentKernels propiedad.

    El número máximo de kernel lanza
    que un dispositivo puede ejecutar simultáneamente
    es de cuatro.

    Un núcleo de una CUDA contexto no
    ejecutar simultáneamente con un núcleo
    de otro CUDA contexto.

    Núcleos que utilizar muchas de las texturas o un
    gran cantidad de memoria local son menos
    posibilidades de ejecutarse simultáneamente con
    otros núcleos.

  2. 6

    Tendrá SM 2.0 o superior simultánea de los núcleos.

    Para obtener la ejecución simultánea deberá manualmente indican que no hay dependencia entre los dos núcleos. Esto es porque el compilador no puede determinar que un kernel no modificar los datos que se utilizan en el otro, esto podría ser por leer y escribir en el mismo tampón que parece bastante simple, pero en realidad es mucho más difícil de detectar ya que no puede ser punteros en el interior de las estructuras de datos y así sucesivamente.

    Para expresar la independencia que debe lanzar los granos en diferentes secuencias. El cuarto parámetro en la triple-chevron sintaxis especifica la secuencia, echa un vistazo a la Guía de Programación o el SDK de concurrentKernels de la muestra.

Dejar respuesta

Please enter your comment!
Please enter your name here