java - 使用 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 应该会处理这个问题。
我在互联网上搜索了一些解决方案或示例或教程.. 任何东西!上面的链接中有相同指令的所有冒号。
一些技术信息:
- 视窗 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 来实现其所有本机互操作。
推荐阅读
- assembly - 从 rsp 比 rbp 开始布局堆栈变量的意义
- mysql - mySQL:我可以添加一个计算列,其中包含具有相同共享值的所有其他行的总和
- reactjs - 在 React 中为音频添加字幕
- excel - 从 Excel 转储中删除日期和时间
- chef-infra - 获取 sh:pvdisplay:升级到 Chef 客户端 16 后找不到命令
- android - 丢失应用程序密钥后在 Android Studio v 4.0.1 中生成 Sign Apk
- python - 循环附加excel工作表不起作用
- c - 仍然可以访问内存,但尝试释放内存
- javascript - 在打字稿中提取给定通用参数的特定联合项
- go - 使用 ghemawat/stream 在切片上应用流序列