2012-02-26 112 views
0

該問題列出了所有相關的版本。無法運行JCUDA 0.4.1在CUDA 4.0上運行Windows 7 64位,Sun JDK 7和IntelliJ 11.1

我想運行一個示例文件http://www.jcuda.org:JCublasMatrixInvert.java。

我已經安裝了NVIDIA 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 

我可以在路徑看據稱缺少DLL

F:\Projects\Java\learning\out\production\learning\JCublas-windows-x86_64.dll 

我錯過了什麼?我究竟做錯了什麼?任何能夠成功運行這個例子的人都會給我建議嗎?謝謝。

+0

在'F:\ Projects \ Java \ learning \ out \ production \ learning \ JCublas-windows-x86_64.dll'中看到的文件並不是它所說的那個文件,因爲'Can not找到依賴庫可能會提示,有一個文件依賴的庫(可能是'java.lang.NullPointerException:找不到名爲'/ lib/JCublas-windows-x86_64.dll'的資源),這是缺少或損壞的。至少這將是我的猜測。 – ShoeMaker 2013-01-08 02:09:24

+0

謝謝,我會試試看。 – duffymo 2013-01-08 02:14:58

回答

0

從jCuda下載部分下載該文件,並將其放入您的庫路徑。

+0

我很欣賞這種努力,但是您是否閱讀了「我可以在路徑中看到所謂的丟失的dll」行?我*有DLL,我可以在路徑中看到它。我的java.library.path指向該目錄。對不起,這沒有幫助。 – duffymo 2012-03-08 23:56:34

+0

對不起,我誤解了這一點。 「將他們的/ lib目錄添加到我的java.library.path」,但是在「-Djava.library.path = F:\ Projects \ Java \ learning \ out \ production \ learning」中沒有lib「 – djmj 2012-03-09 00:39:53

+0

不用擔心,謝謝。看着。我很欣賞這種努力。你是第一個嘗試的人。 – duffymo 2012-03-09 00:58:41

1

如果標準方式太難了 - 我建議您使用JCuda的mavenized版本。您可以在這裏複製標準項目 - https://github.com/MysterionRise/mavenized-jcuda它適用於Windows/Linux的32/64位自動工作

所有你需要做的就是運行:

  • 您需要在此處安裝的Cuda 5.5平臺 - https://developer.nvidia.com/cuda-downloads
  • 呼叫MVN清潔套裝建設項目
  • 呼叫MVN EXEC:exec來運行主類「你好,JCuda」樣本:)
  • 後,你可以用你的JCuda的代碼替換主類
相關問題