Как уменьшить задержку/задержку синхронизации CUDA

Этот вопрос связан с использованием потоков cuda для запуска многих ядер

. В CUDA много команд синхронизации cudaStreamSynchronize, CudaDeviceSynchronize, cudaThreadSynchronize, а также cudaStreamQuery, чтобы проверить, пусты ли потоки.

При использовании профилировщика я заметил, что эти команды синхронизации вносят большую задержку в программу. Мне было интересно, знает ли кто-нибудь какие-либо средства для уменьшения этой задержки, кроме, конечно, использования как можно меньшего количества команд синхронизации.

Также есть какие-либо цифры, чтобы судить о наиболее эффективном методе синхронизации. то есть рассмотрим 3 потока, используемых в приложении, и два из них должны быть завершены, чтобы я мог запустить четвертый поток. Должен ли я использовать 2 cudaStreamSync или только один cudaDeviceSync, что приведет к меньшим потерям?

7
задан einpoklum - reinstate Monica 26 October 2017 в 23:59
поделиться