Нет JCudaRuntime-0.9.2-windows-x86_64 в java.library.path при попытке запустить образец JCuda - PullRequest
0 голосов
/ 28 октября 2018

Я импортировал следующие библиотеки в Gradle:

compile group: 'org.jcuda', name: 'jcuda-natives', version: '0.9.2'
compile group: 'org.jcuda', name: 'jcublas-natives', version: '0.9.2'
compile group: 'org.jcuda', name: 'jcublas', version: '0.9.2'

и скопировал вставленный JCublasSampleexample со страницы JCuda .

К сожалению, я получаю следующую ошибку:

Creating input data...
Performing Sgemm with Java...
Performing Sgemm with JCublas...
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error while loading native library "JCudaRuntime-0.9.2-windows-x86_64"
Operating system name: Windows 10
Architecture         : amd64
Architecture bit size: 64
---(start of nested stack traces)---
Stack trace from the attempt to load the library as a file:
java.lang.UnsatisfiedLinkError: no JCudaRuntime-0.9.2-windows-x86_64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at jcuda.LibUtils.loadLibrary(LibUtils.java:143)
    at jcuda.runtime.JCuda.initialize(JCuda.java:422)
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:406)
    at jcuda.jcublas.JCublas.initialize(JCublas.java:93)
    at jcuda.jcublas.JCublas.<clinit>(JCublas.java:81)
    ...

Конечно, библиотека отсутствует.Вопрос в том, как связать его с Maven / Gradle?Сайт говорит, что все библиотеки DLL должны быть внутри JAR.

CUDA установлен, но я нигде не указал его версию, как это было с nd4j.

1 Ответ

0 голосов
/ 28 октября 2018

Это была моя ошибка: DLL библиотеки cublas правильной версии CUDA не было в PATH. DLL JCublas успешно загружался без каких-либо хитростей Gradle, потому что код копировал его в tmp каталог CLASSPATH. Одновременно сообщение об ошибке не было информативным, предлагая мне искать проблемы в другом месте, а также пример Gradle сбивал с толку.

Обобщая, что требуется: иметь CUDA той же версии, что и JCublas (и правильный путь PATH) и требуемые "родные" JAR-файлы на пути к классам.

...