我在Gradle中导入了以下库:
compile group: 'org.jcuda', name: 'jcuda-natives', version: '0.9.2'
compile group: 'org.jcuda', name: 'jcublas-natives', version: '0.9.2'
compile group: 'org.jcuda', name: 'jcublas', version: '0.9.2'
并从JCuda页面复制粘贴JCublicasSampleexample。
不幸的是,我得到了以下错误:
Creating input data...
Performing Sgemm with Java...
Performing Sgemm with JCublas...
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error while loading native library "JCudaRuntime-0.9.2-windows-x86_64"
Operating system name: Windows 10
Architecture : amd64
Architecture bit size: 64
---(start of nested stack traces)---
Stack trace from the attempt to load the library as a file:
java.lang.UnsatisfiedLinkError: no JCudaRuntime-0.9.2-windows-x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at jcuda.LibUtils.loadLibrary(LibUtils.java:143)
at jcuda.runtime.JCuda.initialize(JCuda.java:422)
at jcuda.runtime.JCuda.<clinit>(JCuda.java:406)
at jcuda.jcublas.JCublas.initialize(JCublas.java:93)
at jcuda.jcublas.JCublas.<clinit>(JCublas.java:81)
...
当然,图书馆不在。问题是如何将它与Maven/Gradle联系起来?网站说所有DLL都应该在JAR中。
安装了CUDA
,但我没有像使用nd4j
那样在任何地方指定它的版本。
这是我的错:正确CUDA版本的cublas DLL不在PATH
中。JCublas的DLL
在没有任何Gradle技巧的情况下成功加载,因为代码正在将其从CLASSPATH
复制到tmp
目录中。同时,错误消息并没有提供信息,建议我在其他地方查找问题,Gradle的例子也令人困惑。
总结所需内容:安装与JCublas版本相同的CUDA(并且PATH正确(,并且在类路径上需要"本机"JAR。