[CUDA] 设置sync模式cudaSetDeviceFlags 可以设置cuda Stream synchorinze时是释放cpu资源还是把持cpu资源;根据官方说明默认当gpu 个数大于cpu的时候,因为cpu紧张所以会yield时间片;cuda的 synchronize等待模式分为: Yield方式, busy waiting方式(spin), blocking方式。- gpu context切换更加频繁了,应该是block阻塞导致的。- block恢复存在延迟,导致一些空白gpu时间,如下图红色框。采用blocking模式后,nsight观察的现象有几个。
[CUDA] stream使用笔记 一些cudaMemcpyAsync, 不一定是异步的,比如当host和device之间传输数据的时候,虽然使用异步copy,但是会内含同步,从而导致一些block或spin行为。
[C++] 程序耗时统计函数的使用指南 本文总汇了clock, clock_gettime, getimeofday, times四种时间获取方法,用于debug C++代码时使用,通过他们的特性和自己使用场景来选择