在eclipse中执行jcuda程序时出错

时间:2015-04-23 09:45:34

标签: java linux eclipse jcuda

我是 JCuda 的新手。我尝试在 Linux 上的 Eclipse 中编写一个简单的例子。我有这个错误,但我不明白这意味着什么。代码如下:

 import jcuda.Pointer;
 import jcuda.runtime.JCuda;
 public class cudaTest {
 public static 
 void main(String[] args) {
    Pointer pointer = new Pointer();
    JCuda.cudaMalloc(pointer, 4);
    System.out.println("Pointer: " + pointer);
    JCuda.cudaFree(pointer);
 }
}

我从Java Build Path添加 Jcuda.jar ,并通过选择提取的 JCuda 文件来编辑Native库位置。 错误是:

Error while loading native library "JCudaRuntime-linux-x86_64" with base name "JCudaRuntime"
Operating system name: Linux
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/libJCudaRuntime-linux-x86_64.so'
    at jcuda.LibUtils.loadLibraryResource(LibUtils.java:151)
    at jcuda.LibUtils.loadLibrary(LibUtils.java:83)
    at jcuda.runtime.JCuda.initialize(JCuda.java:303)
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290)
    at cudaTest.main(cudaTest.java:8)
Stack trace from the attempt to load the library as a file:
java.lang.UnsatisfiedLinkError: /home/Faith/JCuda-All-0.4.2-bin-linux-x86_64/libJCudaRuntime-linux-x86_64.so: libcudart.so.4: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at jcuda.LibUtils.loadLibrary(LibUtils.java:94)
    at jcuda.runtime.JCuda.initialize(JCuda.java:303)
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290)
    at cudaTest.main(cudaTest.java:8)

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load the native library
    at jcuda.LibUtils.loadLibrary(LibUtils.java:129)
    at jcuda.runtime.JCuda.initialize(JCuda.java:303)
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290)
    at cudaTest.main(cudaTest.java:8)

请帮助我,我真的需要解决方案。提前谢谢。

3 个答案:

答案 0 :(得分:1)

查找系统中的libJCudaRuntime-linux-x86_64.so文件,并创建一个到/lib/libJCudaRuntime-linux-x86_64.so的symoblic链接,或者将找到它的目录路径添加到ldconfig

答案 1 :(得分:1)

将.so文件复制到lib目录:

$ sudo cp *.so /lib/

答案 2 :(得分:0)

可能的想法之一 - 尝试我的项目名为 Mavenized JCuda https://github.com/MysterionRise/mavenized-jcuda

它是专门为了不打击类路径和其他问题而创建的。使用它真的很容易,你需要做的就是将所需的JCuda版本放在 pom.xml 中,然后运行 mvn clean package 然后 mvn EXEC:EXEC

Full HowTo在Github页面上可用。请随意向我提问或提出有关该项目的问题