首页 > 解决方案 > 使用 CUDA 运行 Dl4j 的问题

问题描述

我正在尝试使用 GPU 而不是 CPU 运行 dl4j 模型。该模型使用 CPU 运行良好。所以我决定尝试使用 CUDA 来利用我的 GPU。我按照此处描述的每个步骤进行操作,对于 CUDA 安装,我按照 NVIDIA 的说明从此处安装 CUDA Toolkit 。代码编译正常,但出现错误:

Skipped [JCublasBackend] backend (unavailable): java.lang.UnsatisfiedLinkError: C:\Users\albertb\.javacpp\cache\cuda-10.2-7.6-1.5.3-windows-x86_64.jar\org\bytedeco\cuda\windows-x86_64\jnicudart.dll: Can't find dependent libraries
Exception in thread "main" java.lang.ExceptionInInitializerError
    at TestCUDA.run(TestCUDA.java:12)
    at TestCUDA.main(TestCUDA.java:7)
Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j back-end on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend
    at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5094)
    at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:270)
    ... 2 more
Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend
    at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:221)
    at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5091)
    ... 3 more

我的项目是在 IntelliJ 上使用 Maven 创建的。我猜所有的依赖项都可以,否则代码将无法编译。必须缺少某些后端依赖项或库或安装。可能是版本不兼容的问题。
该消息Please ensure that you have an nd4j backend on your classpath给了我一些关于必须存在的后端 jar 的提示。但据我所知,Maven 应该会处理这个问题。

我在互联网上搜索了一些解决方案或示例或教程.. 任何东西!上面的链接中有相同指令的所有冒号。

一些技术信息:

我会继续努力解决这个问题,但我会很感激任何帮助。谢谢。

标签: javacudadl4j

解决方案


您可能安装了错误的 cuda 版本。nd4j cuda 版本在工件 id 中指定,例如:nd4j-cuda-11.0/10.2。

如果需要,您可以使用 javacpp 中的 redist 工件:https ://search.maven.org/artifact/org.bytedeco/cuda-platform-redist/11.0-8.0-1.5.4/jar

这是 cuda 11 的最新版本。Nd4j 只是在下面使用 javacpp 来实现其所有本机互操作。


推荐阅读