gpt4 book ai didi

gpgpu - cudamalloc 比 cudamemcpy 慢吗?

转载 作者:行者123 更新时间:2023-12-03 21:40:04 26 4
gpt4 key购买 nike

我正在处理一个需要时间效率的代码,因此为此目的使用 Cufft,但是当我尝试并行计算非常大数据的 fft 时,它比 cpu fftw 慢,这是我在找到每个的时间后发现的原因使用高精度计时代码的代码行是 cudamalloc 大约需要 0.983 秒,而其余代码行的时间约为 0.00xx 秒,这是预期的......

我已经浏览了一些相关的帖子,但根据他们

the main delay with GPUs is due to memory transfer not memory allocation



而且在其中一篇文章中写道

The very first call to any of the cuda library functions launches an initialisation subroutine



这种延迟的实际原因是什么......或者在代码执行中出现这种延迟是不正常的???

提前致谢

最佳答案

您看到的大延迟(接近 1 秒)是否可能是由于驱动程序初始化造成的? cudaMalloc 似乎相当长。还要检查您的驱动程序是否是最新的。

第一次内核启动的延迟可能是由于多种因素造成的:

  • 驱动初始化
  • PTX编译
  • 上下文创建

  • 第一个仅适用于您在没有 X 的 Linux 系统上运行的情况。在这种情况下,驱动程序仅在需要时加载,然后卸载。运行 nvidia-smi -pm 1由于 root 将以持久模式运行驱动程序以避免此类延迟,请查看 man nvidia-smi有关详细信息,请记住将其添加到 init 脚本中,因为它不会在重新启动后持续存在。

    第二个延迟是为系统中的特定设备架构编译 PTX。通过将您的设备架构(或架构,如果您想在不编译 PTX 的情况下支持多个架构)的二进制文件嵌入到可执行文件中,可以轻松避免这种情况。有关更多信息,请参阅 CUDA C 编程指南(可在 NVIDIA website 上获得),第 3.1.1.2 节讨论了 JIT 编译。

    第三点是上下文创建,这是不可避免的,但 NVIDIA 已竭尽全力降低成本。上下文创建涉及将可执行代码复制到设备、复制任何数据对象、设置内存系统等。

    关于gpgpu - cudamalloc 比 cudamemcpy 慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684918/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com