繁体   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