使用CUDA运行Dl4j的问题

问题描述

我正在尝试使用GPU而不是cpu运行dl4j模型。该模型使用cpu可以完美运行。 因此,我决定尝试使用CUDA来利用我的GPU。我遵循了here中描述的每个步骤,并且按照CUDA的安装说明,按照NVIDIA的指示从here安装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 backend 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创建的。所有的依赖关系都可以,我想否则cobe无法编译。某些后端依赖项或库或安装必须丢失。 可能是版本不兼容是问题。
消息Please ensure that you have an nd4j backend on your classpath给了我一些必须在其中的后端jar的提示。但是据我所知,Maven应该照顾好这个。

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

一些技术信息:

  • Windows 10
  • Java 1.8 IntelliJ + Maven
  • dl4j 1.0,0-beta7
  • nd4j-cuda-10.2
  • CUDA 11.1-今天的最新版本

我将继续尝试解决问题,但我将不胜感激。 谢谢。

解决方法

您可能安装了错误的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。

,

我解决了!现在我的示例在GeForce3090上工作!!!

我的POM的一部分:

 org.example
    dl4jCuda
    1.0-SNAPSHOT

        <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-cuda-11.0</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-core</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

还需要从源代码构建nd4j-cuda-11.0,并将所有* jar和dll文件添加到您的项目中!