JCuda

Status
Nicht offen für weitere Antworten.

Bakuer

Mitglied
Hallo zusammen,

Ich hab' ein paar Fragen und würde mich sehr freuen wenn jemand mir helfen könnte.
Hat jemand schon Jcuda bibliothek benutzt ? und wenn ja wie geht es im Java ?
ich benutze Eclipse und habe ich Java SKD, Jcuda bibliothek und Cuda Driver habe ich auch... wie muss ich alles in Eclipse einbauen und wie muss ich Bibliothek importieren ?

Ich bedanke mich im Voraus !
 

Bakuer

Mitglied
Hallo,

Danke für die Antwort , aber das alles habe ich schon gemacht , und es funktioniert trotzdem nicht :(

import jcuda.driver.*; ist das falsche Importierung ??
 

Marco13

Top Contributor
Bezüglich der imports: Je nachdem, ob du die Runtime- oder die Driver API verwenden willst, wäre es im allgemeinen
Code:
import jcuda.*;
import jcuda.driver.*;
oder
Code:
import jcuda.*;
import jcuda.runtime.*;

Dazu kannst du dir auch mal die jcuda.org - Samples ansehen - das sind vollständige, compilierbare Beispielprogramme.

Bezüglich der DLLs: Im Zweifelsfall einfach alles DLLs aus dem ZIP ;) Wenn du z.B. JCublas nicht verwenden willst, brauchst du z.B. JCublas-windows-x86.dll u.a. nicht, aber um es "erstmal" zum Laufen zu kriegen kannst du sie einfach alle reinkopieren, dann kann erstmal nichts schiefgehen.

Und wenn doch etwas schiefgeht: Wie äußert sich denn, dass es nicht funktioniert? Gibt es Compilerfehler, oder sagt er, dass er die DLLs nicht findet?
 

Bakuer

Mitglied
Danke dir :)
Es ist teilweiser geklappt
Code:
Error while loading native library with base name "JCudaRuntime"
Operating system name: Windows XP
Architecture         : x86
Architecture bit size: 32
Stack trace:
java.lang.UnsatisfiedLinkError: no JCudaRuntime-windows-x86 in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at jcuda.LibUtils.loadLibrary(LibUtils.java:53)
	at jcuda.runtime.JCuda.assertInit(JCuda.java:227)
	at jcuda.runtime.JCuda.cudaMalloc(JCuda.java:844)
	at JCudaRuntimeSample.main(JCudaRuntimeSample.java:45)
Creating input data
Initializing device data using JCuda
Das ist die Fehlermeldung , mein System ist 32 Bit Win XP
Woran liegt das ?

Und muss man in Java auch wie in C/C++ Speicher reservieren?
 

Marco13

Top Contributor
Hm, OK, er findet die DLL nicht - wenn du den java.library.path von Hand irgendwie gesetzt hättest, könnte das der Grund sein - wenn du das NICHT gemacht hast (wovon ich ausgehe) könnte die Abhilfe sein, ihn explizit zu setzen - aber das sollte eigentlich nicht notwendig sein, wenn alle DLLs im Haupverzeichnis des Projektes liegen... tun sie das? ???:L

In Java allokiert man Speicher, wie in C++, mit
int array[] = new int[100];
allerdings gibt es schon einige Unterschiede... Speziell bei CUDA/JCuda ist es eben ein Unterschied, ob man den Speicher auf dem Host (d.h. in C oder Java, im "normalen RAM") allokiert, oder auf dem Device (d.h. auf der Grafikkarte). Letzteres macht man mit cudaMalloc.
 

Marco13

Top Contributor
???:L Häm ... wenn du (NUR) das erste Zip von jcuda.org - Downloads in ein Verzeichnis entpackst, dann hast du da drin einige JARs und einige DLLs. Die JARs musst du bei
Project -> Properties -> Java Build Path -> Add JARS
hinzufügen, und die DLLs ins Hauptverzeichnis des Projektes kopieren - der Screenshot sieht aus, als hättest du alle einzelnen Bibliotheken runtergeladen und die ZIPs referenziert oder so... ???:L
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben