GPU-CPU命令行缓冲区

目录

    1. 书上25页
    2. 命令行缓冲区是一个循环队列(在锁页内存上),且有大小限制(书上说是几千)
      1. CPU调用GPU干活,就会往队列屁股后添加指令
      2. GPU看到队列头有指令,就开始干活
    3. 受CPU限制,受GPU限制
      1. 受CPU限制:cpu繁忙,向命令行缓冲区写命令很慢,没有命令那gpu就闲下来了

      2. 受GPU限制:gpu繁忙,命令行缓冲区已经写满指令了,但gpu一条的没执行完,cpu想写指令也只能干等着

      3. 以上两个会导致加速比受影响,具体需要用阿姆达尔法则计算



    1. cudaDeviceSynchronize()同步函数的底层实现, pdf第28页

      1. 命令行缓存区(锁页内存上)有一块区域(图中红色矩形),当gpu完成一个任务就会写入任务id到这块区域,当达到8时,cpu结束等待
        展开查看:pdf第28页cudaDeviceSynchronize底层实现 drawing
    2. cudaMemcpys函数是半双工的,零拷贝可以利用PCIe的全双工

      1. Zero-copy can be full duplex(全双工), but cudaMemcpys are only half-duplex(半双工).
        展开查看:双工截图 drawing
    posted @ 2023-04-18 17:14  马角的逆袭  阅读(80)  评论(0编辑  收藏  举报