我是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 构建路径中添加 Jcuda.jar,并通过选择提取的 JCuda 文件来编辑本机库位置。错误是:
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)
请帮我,我真的需要解决方案。提前谢谢你。
在系统中查找libJCudaRuntime-linux-x86_64.so
文件,并创建一个符号链接/lib/libJCudaRuntime-linux-x86_64.so
或将找到它的目录的路径添加到ldconfig
将 .so 文件复制到 lib 目录:
$ sudo cp *.so /lib/
其中一个可能的想法 - 是尝试我的名为Mavenized JCuda的项目https://github.com/MysterionRise/mavenized-jcuda
它是专门为不与类路径和其他问题作斗争而创建的。它真的很容易使用,你需要做的就是把所需的JCuda版本放在pom.xml中,然后运行mvn干净的包,然后运行mvn exec:exec。
完整的操作方法可在Github页面上找到。随时向我提问或提出有关项目的问题