Cette question est liée à l'utilisation des flux cuda pour exécuter plusieurs noyaux.
Dans CUDA, il existe de nombreuses commandes de synchronisation. cudaStreamSynchronize, CudaDeviceSynchronize, cudaThreadSynchronize, et aussi cudaStreamQuery pour vérifier si les flux sont vides.
J'ai remarqué en utilisant le profileur que ces commandes de synchronisation introduisent un grand retard dans le programme. Je me demandais si quelqu'un connaît un moyen de réduire cette latence, à part bien sûr utiliser le moins de commandes de synchronisation possible.
Par ailleurs, existe-t-il des chiffres permettant de juger de la méthode de synchronisation la plus efficace ? Considérons 3 flux utilisés dans une application et deux d'entre eux doivent se terminer pour que je puisse lancer un quatrième flux : dois-je utiliser 2 cudaStreamSync ou un seul cudaDeviceSync, ce qui entraînera moins de pertes ?