Java Can';t在64位Windows 7、Sun JDK 7和IntelliJ 11.1上通过CUDA 4.0运行JCUDA 0.4.1

Java Can';t在64位Windows 7、Sun JDK 7和IntelliJ 11.1上通过CUDA 4.0运行JCUDA 0.4.1,java,windows-7,64-bit,nvidia,jcuda,Java,Windows 7,64 Bit,Nvidia,Jcuda,问题列出了所有相关的版本 我正在尝试运行一个示例文件:JCublasMatrixInvert.java 我已经安装了英伟达CUDA驱动程序;我已经下载了JCUDA 0.4.1绑定,并将它们的/lib目录添加到我的java.library.path中。以下是我在运行时设置的JVM参数: -ea -XX:+UseParNewGC -XX:+UseNUMA -XX:PermSize=128m -XX:MaxPermSize=256m -Xmx1024m -Djava.library.path=F:\P

问题列出了所有相关的版本

我正在尝试运行一个示例文件:JCublasMatrixInvert.java

<>我已经安装了英伟达CUDA驱动程序;我已经下载了JCUDA 0.4.1绑定,并将它们的/lib目录添加到我的java.library.path中。以下是我在运行时设置的JVM参数:

-ea -XX:+UseParNewGC -XX:+UseNUMA -XX:PermSize=128m -XX:MaxPermSize=256m -Xmx1024m -Djava.library.path=F:\Projects\Java\learning\out\production\learning
然而,当我尝试运行该类时,我得到以下堆栈跟踪:

Error while loading native library "JCublas-windows-x86_64" with base name "JCublas"
Operating system name: Windows 7
Architecture         : amd64
Architecture bit size: 64
Stack trace from the attempt to load the library as a resource:
java.lang.NullPointerException: No resource found with name '/lib/JCublas-windows-x86_64.dll'
    at jcuda.LibUtils.loadLibraryResource(LibUtils.java:151)
    at jcuda.LibUtils.loadLibrary(LibUtils.java:83)
    at jcuda.jcublas.JCublas.initialize(JCublas.java:82)
    at jcuda.jcublas.JCublas.<clinit>(JCublas.java:70)
    at matrix.jcuda.JCublasMatrixInvert.main(JCublasMatrixInvert.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Stack trace from the attempt to load the library as a file:
java.lang.UnsatisfiedLinkError: F:\Projects\Java\learning\out\production\learning\JCublas-windows-x86_64.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at jcuda.LibUtils.loadLibrary(LibUtils.java:94)
    at jcuda.jcublas.JCublas.initialize(JCublas.java:82)
    at jcuda.jcublas.JCublas.<clinit>(JCublas.java:70)
    at matrix.jcuda.JCublasMatrixInvert.main(JCublasMatrixInvert.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load the native library
    at jcuda.LibUtils.loadLibrary(LibUtils.java:129)
    at jcuda.jcublas.JCublas.initialize(JCublas.java:82)
    at jcuda.jcublas.JCublas.<clinit>(JCublas.java:70)
    at matrix.jcuda.JCublasMatrixInvert.main(JCublasMatrixInvert.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 1

我错过了什么?我做错了什么?任何成功运行此示例的人都能给我提供建议吗?谢谢。

从jCuda下载部分下载该文件,并将其放入您的库路径。

如果标准方式太难,我建议您使用jCuda的mavenized版本。您可以在这里克隆标准项目-它在Windows/Linux 32/64位上自动工作

您需要做的就是运行:

  • 您需要在此处为您的平台安装Cuda 5.5-
  • 调用mvn clean包来构建项目
  • 调用mvn exec:exec运行带有“Hello,JCuda”示例的主类:)
  • 之后,您可以用JCuda代码替换主类

我很感谢您的努力,但是您是否阅读了“我可以在路径上看到据称丢失的dll”这句话?我有DLL,我可以在路径中看到它。我的java.library.path指向该目录。对不起,这没用。对不起,我理解错了。“已将它们的/lib目录添加到我的java.library.path”但“-Djava.library.path=F:\Projects\java\learning\out\production\learning”中没有lib无需担心,谢谢您的查看。我感谢你的努力。你是第一个尝试的人。是的,那不是一次尝试。半年前,我刚刚将ddl放在我的exe文件夹或project文件夹中,并且只将JAR添加到我的构建路径中。您在
F:\Projects\Java\learning\out\production\learning\JCublas-windows-x86_64.dll中看到的文件
并不是它所说的缺少的文件,因为
找不到依赖库
,文件所依赖的库(可能
java.lang.NullPointerException:找不到名为“/lib/JCublas-windows-x86_64.dll”
)丢失或损坏。至少这是我的猜测。
F:\Projects\Java\learning\out\production\learning\JCublas-windows-x86_64.dll