【问题标题】:CUDA testing in Julia - very low GPU utilizationJulia 中的 CUDA 测试 - GPU 利用率非常低
【发布时间】: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 上运行实际基准测试(百万倍差)。因此,除非您正确地进行基准测试,否则所有信息都是无关紧要的。而且由于您不确定-基准测试就是答案:-)

标签: windows julia gpu


【解决方案1】:

正如 cmets 所指出的,Cuda.jl/test 中的测试旨在测试编译管道,而不是真正将 GPU 置于任何重大负载下。只是为了完成图片,如果您确实想尝试加载 GPU,您可以尝试修改 https://cuda.juliagpu.org/stable/tutorials/introduction/ 中的示例,例如沿着

N = 2^20
using CUDA

x_d = CUDA.fill(1.0f0, N)  # a vector stored on the GPU filled with 1.0 (Float32)
y_d = CUDA.fill(2.0f0, N)  # a vector stored on the GPU filled with 2.0

for i=1:100000
    y_d .+= sqrt.(x_d)
end

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 2019-09-25
    • 2017-02-02
    • 1970-01-01
    • 2023-02-24
    • 2020-11-08
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多