【发布时间】:2021-09-23 06:05:17
【问题描述】:
我一直在尝试在 Julia 下为我的 RTX 2070 GPU 设置 CUDA 计算,到目前为止,在执行 CUDA 并行化代码时,我没有收到任何与 CUDA 初始化失败相关的错误。然而,并行计算似乎出奇的慢,所以我从 Julia 发起了Pkg.test("CUDA"),以更深入地了解为什么会这样。以下是部分结果的截图:
Julia CUDA test。与 CPU 相比,GPU 分配似乎完全可以忽略不计。
这也反映在 CUDA 与 CPU 使用率的对比中 - 运行 nvidia-smi 显示 0% 不稳定的 GPU-util,而资源监视器中的 CPU 在整个测试期间始终保持在 80% 甚至更多的使用率。
此外,任务管理器中的 CUDA 利用率图表仅显示 CUDA 利用率的峰值,而不是持续使用:Screenshot of CUDA utilization in task manager。
对于为什么会出现这种情况有什么建议吗?我已经多次验证了正确的 CUDA 包和驱动程序安装,但我不确定下一步该做什么。
【问题讨论】:
-
Julia 代码需要大量时间来编译 CUDA。从您在帖子中所写的内容来看,您似乎一直在对 CUDA 代码编译过程进行基准测试(当您只运行任何函数一次时,总是会发生这种情况)。
-
我猜这些尖峰是实际的 GPU 操作,其余的是所有 Julia 端操作,以使这些尖峰发生。
-
@PrzemyslawSzufel 感谢您的评论!我的印象是,
Pkg.test("CUDA")中的每个测试都旨在为给定的 Julia 函数执行大量 CUDA 计算。您是说几 GB 的 CPU 分配与 0.00 MB 的 GPU 分配(在第一个屏幕截图中可见)反映了昂贵的编译过程吗?我假设该测试套件中至少会有一个测试会使 GPU 承受大量负载,但没有一个测试最终会这样做。 -
@t3tcbr:查看屏幕截图中一些测试的代码(我什至第一次看到 Julia 代码,顺便说一句),它们大部分都是很小的玩具示例。他们看起来像是在那里练习编译基础设施和代码库并确认一切正常。不是“让 GPU 承受大量负载”。我认为你对它的用途有不切实际的期望
-
我已经运行了很多次基准测试,编译时间为 30 秒 vs 30 微秒,以在 GPU 上运行实际基准测试(百万倍差)。因此,除非您正确地进行基准测试,否则所有信息都是无关紧要的。而且由于您不确定-基准测试就是答案:-)