Не удается запустить JCUDA 0.4.1 поверх CUDA 4.0 в 64-разрядной версии Windows 7, Sun JDK 7 и IntelliJ 11.1 - PullRequest
0 голосов
/ 27 февраля 2012

Вопрос выкладывает все соответствующие версии.

Я пытаюсь запустить один из примеров файлов на 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

Что я пропустил?Что я делаю неправильно?Может ли кто-нибудь, кому удалось запустить этот пример, посоветовать мне?Спасибо.

Ответы [ 2 ]

1 голос
/ 01 апреля 2014

Если стандартный способ слишком сложен - я рекомендую вам использовать mavenized версию JCuda.Вы можете клонировать стандартный проект здесь - https://github.com/MysterionRise/mavenized-jcuda он работает автоматически для Windows / Linux 32/64 бит

Все, что вам нужно сделать, это запустить:

  • Вам нужноустановить Cuda 5.5 для вашей платформы здесь - https://developer.nvidia.com/cuda-downloads
  • Вызовите пакет mvn clean для сборки проекта
  • Вызовите mvn exec: exec для запуска основного класса с примером "Hello, JCuda":)
  • После этого вы можете заменить основной класс своим кодом JCuda
0 голосов
/ 09 марта 2012

Загрузите этот файл из раздела загрузки jCuda и поместите его в путь к своей библиотеке.

...