GPU-CPU命令行缓冲区
目录
- 书上25页
- 命令行缓冲区是一个循环队列(在锁页内存上),且有大小限制(书上说是几千)
- CPU调用GPU干活,就会往队列屁股后添加指令
- GPU看到队列头有指令,就开始干活
- 受CPU限制,受GPU限制
-
受CPU限制:cpu繁忙,向命令行缓冲区写命令很慢,没有命令那gpu就闲下来了
-
受GPU限制:gpu繁忙,命令行缓冲区已经写满指令了,但gpu一条的没执行完,cpu想写指令也只能干等着
-
以上两个会导致加速比受影响,具体需要用阿姆达尔法则计算
-
-
cudaDeviceSynchronize()同步函数的底层实现, pdf第28页
- 命令行缓存区(锁页内存上)有一块区域(图中红色矩形),当gpu完成一个任务就会写入任务id到这块区域,当达到8时,cpu结束等待
展开查看:pdf第28页cudaDeviceSynchronize底层实现
- 命令行缓存区(锁页内存上)有一块区域(图中红色矩形),当gpu完成一个任务就会写入任务id到这块区域,当达到8时,cpu结束等待
-
cudaMemcpys函数是半双工的,零拷贝可以利用PCIe的全双工
- Zero-copy can be full duplex(全双工), but cudaMemcpys are only half-duplex(半双工).
展开查看:双工截图
- Zero-copy can be full duplex(全双工), but cudaMemcpys are only half-duplex(半双工).