【问题标题】:How to run CNTK c# EvalDLL Wrapper program on GPU?如何在 GPU 上运行 CNTK c# EvalDLL Wrapper 程序?
【发布时间】:2016-10-14 10:29:36
【问题描述】:

我成功地根据 CIFAR-10 样本训练和评估网络。我正在使用我自己的具有特定尺寸的图像。这些网络使用 GPU 进行训练,并能够使用 CPU 进行评估。但是,我无法使用 GPU 对其进行评估。评估使用 C# EvalDLL Wrapper。 deviceID由-1变为0,表示GPU#如下图:

model0.CreateNetwork(string.Format("modelPath=\"{0}\"", modelFilePath), deviceId: 0);

我错过了什么吗? 任何人都可以在 C# EvalDLL Wrapper 程序上运行 GPU 吗?

我使用的是 CNTK 的二进制版本(不是 CPU_Only)。

【问题讨论】:

  • 查看您自己发布的答案,似乎缺少一些特定于 GPU 的 DLL。正如您所说,最安全的选择是将完整的 CNTK 分发版放在包含 EvalWrapper 的可执行文件旁边。
  • 我检查二进制和编译版本之间的 DLL。 cudas DLL 是匹配的。我注意到的一件事是 CsEvalClien 程序在移动到另一个位置时将不起作用。它将需要将 DLL 复制到本地 exe 位置。您在最后一个答案中提到了GPU框,您可以指定提供该功能的程序吗?我正在寻找一个查看 GPU 使用情况的好工具。再次感谢。
  • 我使用 Nvidia GPU 利用率查看器,在 C:\Program Files\NVIDIA Corporation\Control Panel Client\nvGpuUtilization.exe 中找到 - 但它是一个非常不稳定的东西,停止更新状态,忘记 GPUs 而跑步之类的。预计会经常重新启动该工具。
  • 那工作。看看GPU是否正在运行就足够了。谢谢。

标签: c# gpu cntk


【解决方案1】:

我可以在 GPU 上运行 EvalWrapper,完全使用您在下面发布的代码。我刚刚通过CsEvalClient进行了测试:

  • 在 GPU 机器上通过EvalWrapper 运行我的 CNN 时,日志显示它使用了仅 GPU 的 cuDNN 卷积引擎。我认为这表明它确实在 GPU 上运行。
  • 在仅 CPU 的机器上运行代码时,它会尖叫,找不到 CUDA 驱动程序,正如我所料。
  • 当切换回 deviceId:-1 并在仅 CPU 的机器上运行时,日志显示它使用 GEMM 卷积引擎,并且该引擎仅是 CPU。

当 CNTK 加载模型时,您在日志中看到了什么?

【讨论】:

  • 谢谢安东。知道 CsEvalClient 工作后,我能够让 GPU 在 c# 包装器上工作。我花的时间比我愿意承认的要多。步骤是:
【解决方案2】:

我不确定这是正确的程序。这就是我所做的。 不要使用二进制视觉,而是按照安装说明安装源代码并编译源代码。 将 DLL 从“x64.release”目录复制到“exe”文件所在的目录(流动https://github.com/Microsoft/CNTK/issues/394)。 注意:对于解决方案中的多个项目,请确保配置相同(例如 x64 的发布模式)。 使用 GTX 960,图像的处理速度从 770 毫秒到 1 毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多