2015-04-23 5 views
1

Я новичок в JCuda. Я пытаюсь написать простой пример в Eclipse на Linux. У меня есть эта ошибка, но я не понимаю, что это значит. Вот код:Ошибка при выполнении программы jcuda в 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); 
} 
} 

добавляет Jcuda.jar из сборки Пути Java и редактировать Native расположения библиотеки, выбрав файл извлеченного 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) 

Может тоу помочь мне пожалуйста, я на самом деле нужно решение. Заранее спасибо.

ответ

1

Ищет libJCudaRuntime-linux-x86_64.so файл в вашей системе, и сделать symoblic ссылку /lib/libJCudaRuntime-linux-x86_64.so ИЛИ добавить путь к каталогу, где вы найдете его в LDCONFIG

+0

Пожалуйста, вы можете сказать мне, как я могу это сделать, это первый раз, когда я используйте linux и cuda. Как я могу получить этот файл? –

+0

Используйте 'find', чтобы найти файл из команды вроде этого' find/-name 'libJCudaRuntime-linux-x86_64.so' ' – deimus

+0

OK, но как сделать символическую ссылку на этот файл или добавить путь к каталогу, где я найти его в ldconfig? –

0

Один из возможных идей - это дать попробовать на мой проект под названием Mavenized JCuda https://github.com/MysterionRise/mavenized-jcuda

Он специально создан с целью не борьбу с классам и других проблем. Это очень легко использовать, все, что вам нужно сделать - это поставить нужную версию JCuda в pom.xml, затем запустить mvn clean package, а затем mvn exec: exec.

Full HowTo доступен на странице Github. Не стесняйтесь задавать мне вопросы о том, что или поднять вопрос о проекте