¿Cuál es la diferencia entre estas tres funciones, especialmente en los últimos dos? La biblioteca manual dice que

Tenga en cuenta que esta función está en desuso debido a que su nombre no
reflejar su comportamiento. Su funcionalidad es similar a la
no desuso función cudaDeviceSynchronize(), el cual debería ser utilizado
en su lugar.

Pero no muy seguro de lo que significa.

1 Comentario

  1. 43

    Estos son todos los barreras. Barreras que impiden la ejecución de código más allá de la barrera hasta que cierta condición se cumple.

    1. cudaDeviceSynchronize() detiene la ejecución en la CPU/host hilo (que la cudaDeviceSynchronize se publicó en) hasta que la GPU se ha terminado de procesar todo lo anteriormente solicitado cuda tareas (kernels, copias de datos, etc.)
    2. cudaThreadSynchronize() como se ha descubierto, es sólo una versión obsoleta de cudaDeviceSynchronize. Obsoleto sólo significa que todavía funciona, por ahora, pero se recomienda que no lo uso (uso cudaDeviceSynchronize lugar) y en el futuro, podría ser compatible. Pero cudaThreadSynchronize() y cudaDeviceSynchronize() son básicamente idénticos.
    3. cudaStreamSynchronize() es similar a los dos anteriores funciones, pero más impide la ejecución en la CPU host hilo hasta que la GPU se ha terminado de procesar todo lo anteriormente solicitado cuda tareas que se han emitido en la referencia de corriente. Así cudaStreamSynchronize() toma una corriente de identificación como su único parámetro. cuda tareas emitidos en otras corrientes puede o puede no ser completa cuando la CPU código de ejecución continúa más allá de esta barrera.

Dejar respuesta

Please enter your comment!
Please enter your name here