繁体   English   中英

CPU 中的集成 GPU 是否有通过 PCIe 总线传输数据的开销,就像在 CPU 和专用 GPU 之间传输数据一样?

[英]Do integrated GPUs in CPUs have the overhead of transferring data over the PCIe bus just like transferring data between CPU and dedicated GPU?

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

CPU 中的集成 GPU 是否有通过 PCIe 总线传输数据的开销,就像在 CPU 和专用 GPU 之间传输数据一样?

我问这个问题是因为我的 OpenCL GPU 加速计算在集成的 GPU Intel(R) Iris(R) Xe Graphics 上的性能优于专用的 NVIDIA T500 GPU 对于非常大的数据集。 我试图向自己解释这一点。 然而,对于小数据,NIVIDA GPU 更快。

性能测试:

N也是线程数!

OpenCL GPU Intel(R) Iris(R) Xe Graphics

性能测试OpenCL加速计算,N100

  1. 处理时间:N = 100 的 0.0016272 秒
  2. 处理时间:N = 100 的 0.0014396 秒
  3. 处理时间:N = 100 的 0.0012167 秒
  4. 处理时间:N = 100 的 0.0017356 秒
  5. 处理时间:N = 100 的 0.0011649 秒

性能测试OpenCL加速计算,N1_000

  1. 处理时间:N = 1000 时 0.0026064 秒
  2. 处理时间:N = 1000 时 0.0023835 秒
  3. 处理时间:N = 1000 时 0.0024709 秒
  4. 处理时间:N = 1000 时 0.002758 秒
  5. 处理时间:N = 1000 时 0.0028464 秒

性能测试OpenCL加速计算,N10_000

  1. 处理时间:N = 10000 的 0.0207773 秒
  2. 处理时间:N = 10000 时 0.0205991 秒
  3. 处理时间:N = 10000 的 0.0204573 秒
  4. 处理时间:N = 10000 时 0.0213179 秒
  5. 处理时间:N = 10000 的 0.0213915 秒

性能测试OpenCL加速计算,N100_000

  1. 处理时间:1.2154342 秒,N = 100000
  2. 处理时间:N = 100000 需要 1.2097847 秒
  3. 处理时间:1.214667 秒,N = 100000
  4. 处理时间:N = 100000 需要 1.2179605 秒
  5. 处理时间:1.2161523 秒,N = 100000

性能测试OpenCL加速计算,N1_000_000

  1. 处理时间:3.0097172 秒,N = 1000000
  2. 处理时间:7.0101114 秒,N = 1000000
  3. 处理时间:3.5101502 秒,N = 1000000
  4. 处理时间:3.0101302 秒,N = 1000000
  5. 处理时间:7.0098925 秒,N = 1000000

OpenCL NVIDIA T500 GPU

性能测试OpenCL加速计算,N100

  1. 处理时间:N = 100 时 0.0008086 秒
  2. 处理时间:N = 100 时 0.0007528 秒
  3. 处理时间:N = 100 的 0.000913 秒
  4. 处理时间:N = 100 时 0.0008781 秒
  5. 处理时间:N = 100 时 0.0007748 秒

性能测试OpenCL加速计算,N1_000

  1. 处理时间:N = 1000 时 0.0009754 秒
  2. 处理时间:N = 1000 时 0.0009548 秒
  3. 处理时间:N = 1000 的 0.0010413 秒
  4. 处理时间:N = 1000 时 0.0009378 秒
  5. 处理时间:N = 1000 时 0.0009792 秒

性能测试OpenCL加速计算,N10_000

  1. 处理时间:N = 10000 时 0.0048292 秒
  2. 处理时间:N = 10000 时 0.0049848 秒
  3. 处理时间:N = 10000 时 0.0048261 秒
  4. 处理时间:N = 10000 时 0.0048766 秒
  5. 处理时间:N = 100000 的 0.3641353 秒

性能测试OpenCL加速计算,N100_000

  1. 处理时间:N = 100000 时 0.3648832 秒
  2. 处理时间:N = 100000 的 0.364661 秒
  3. 处理时间:N = 10000 时 0.3648172 秒
  4. 处理时间:N = 100000 时 0.3643978 秒
  5. 处理时间:N = 100000 的 0.3636657 秒

性能测试OpenCL加速计算,N1_000_000

  1. 处理时间:36.6879734 秒,N = 1000000
  2. 处理时间:37.7439221 秒,N = 1000000
  3. 处理时间:37.7102053 秒,N = 1000000
  4. 处理时间:37.7474797 秒,N = 1000000
  5. 处理时间:37.4340912 秒,N = 1000000

集成的 GPU 使用了 CPU 系统 memory 的一部分。数据不通过 PCIe 移动,这使得主机 <-> 设备复制速度更快。 当 iGPU 使用主机指针而不是系统 memory 中的单独副本时,也有可能完全避免数据复制。如果您的应用程序严重依赖主机<->设备复制,这可能解释了性能差异。 尽量避免数据移动。

但看看你的表现数字,这似乎不太可能。 T500 在 N=100000 时表现良好,但随后性能突然下降。 对我来说,这表明你用完了 GPU VRAM(只有 2GB),然后它溢出到系统 memory 中,每次调用 Kernel 时都会有 PCIe 副本,这使得它突然变得非常慢。 检查 VRAM 使用情况。

问题未解决?试试使用:帮您解决问题。
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM