尝试使用 Cuda 运行 Nd4j 时出错

Errors when trying to run Nd4j with Cuda

我已经遵循了我能找到的所有教程,但不知何故我似乎无法让 Nd4j 与 Cuda 后端一起工作。我想我缺少一个库,但我不知道从哪一个库或从哪里下载它。

我得到的错误是:

18:23:23.872 [main] WARN  org.nd4j.linalg.factory.Nd4jBackend - Skipped [JCublasBackend] backend (unavailable): java.lang.UnsatisfiedLinkError: no cudart in java.library.path
18:23:23.958 [main] INFO  org.nd4j.linalg.factory.Nd4jBackend - Loaded [CpuBackend] backend

我正在使用 Nd4j,我的 class 路径上有(除其他外)以下 jar:

nd4j-native-1.0.0-beta3.jar
nd4j-native-api-1.0.0-beta3.jar
cuda-10.0-7.3-1.4.3.jar
nd4j-cuda-10.0-1.0.0-beta3.jar. 

Cuda 10.0安装成功:

C:\Users\username>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
Cuda compilation tools, release 10.0, V10.0.130

我试图将 Java 指向 Cuda bin 目录,如下所示:

-Djava.library.path="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin"

但这没有区别。此外,我在 nd4j-cuda-10.0-platform-1.0.0-beta3.jar 和 cuda-platform-10.0-7.3-1.4.[=39 中的 pom.xml 上尝试了 mvn 命令=],这会导致下载很多 jar,但其中 none 似乎包含我丢失的 dll。

在四处搜索时,我发现其他用户在谈论像 'cuda-10.0-7.3-1.4.3-windows-x86_64.jar' 这样应该包含 jnicudart.dll 的罐子,但我在任何地方都找不到这样的罐子。我在这里错过了什么?

--更新-- 我已将所有内容更新为 beta5,并找到了一个包含缺失 jnicudart.dll 的 cuda jar,但我仍然遇到相同的错误。我已经使用 Dependencies 来检查出了什么问题,结果是这样的:

它说 NVidia cudart64_100.dll 的校验和不正确。这是否与 NVidia Cuda10 不支持我的 Geforce GT 730 有关,因为它是 Fermi 架构?或者是 cuda 安装损坏还是什么?

  1. 请将您的 nd4j/dl4j 版本更新为 1.0.0-beta5
  2. 请告诉我,您的 GPU 型号名称和 nvidia 驱动程序版本是多少?即显示 nvidia-smi 输出。

好的,我明白了;必须安装 Cuda8.0 并将所有 Nd4j 恢复为 beta2,并将正确的 cuda-8.9-6.0-1.4.1-windows-x86_64.jar 添加到我的类路径中。此外,我必须重新启动 IDE 才能更新 windows PATH 环境,以便 CUDA 8 bin 目录位于其中。然后我发现

CUDA backend requires compute capatibility of 3.0 and above to run

而我的复古卡只有 2.1,所以一切都是徒劳的:/

我想必须购买新的 GPU...