如何在GPU上运行 CNTK c# EvalDLL Wrapper程序?

How to run CNTK c# EvalDLL Wrapper program on GPU?

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

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

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

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

我能够在 GPU 上 运行 EvalWrapper,完全使用您在下面发布的代码。我刚刚通过 CsEvalClient:

进行了测试
  • 当 运行在 GPU 机器上通过 EvalWrapper 连接我的 CNN 时,日志显示它使用了 cuDNN 卷积引擎,它是仅限 GPU 的。我认为这是它在 GPU 上确实 运行 的标志。
  • 当 运行 在一个只有 CPU 的盒子上调用代码时,它尖叫说它找不到 CUDA 驱动程序,正如我所期望的那样。
  • 当在仅 CPU 框上切换回 deviceId:-1 和 运行 时,日志显示它使用 GEMM 卷积引擎,并且该引擎是CPU-仅。

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

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