# JCuda



## Bakuer (30. Sep 2009)

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 !


----------



## bygones (30. Sep 2009)

java-forum.org - Suchergebnisse


----------



## Marco13 (30. Sep 2009)

Wie bei Java üblich ist Groß/Kleinschreibung hier wichtig  Es gibt
jCUDA: jCUDA
JCUDA: http://www.cs.rice.edu/~vsarkar/PDF/Yan-Grossman-Sarkar-Europar-2009.pdf und
JCuda jcuda.org - Java bindings for CUDA

Wenn du dich auf letzteres beziehst: 
Project -> Properties -> Java Build Path -> Add JARS: jcuda.jar hinzufügen
DLLs am einfachsten ins Projektverzeichnis kopieren
Dann sollte es schon gehen. Wenn Fragen sind, sag' einfach bescheid.


----------



## Bakuer (1. Okt 2009)

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 ??


----------



## Bakuer (1. Okt 2009)

Marco13 hat gesagt.:


> DLLs am einfachsten ins Projektverzeichnis kopieren


und welche DLL muss ich ins Projektverzeichnis kopieren ??


----------



## Marco13 (1. Okt 2009)

Bezüglich der imports: Je nachdem, ob du die Runtime- oder die Driver API verwenden willst, wäre es im allgemeinen

```
import jcuda.*;
import jcuda.driver.*;
```
oder

```
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 (1. Okt 2009)

Danke dir 
Es ist teilweiser geklappt 

```
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 (1. Okt 2009)

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.


----------



## Bakuer (1. Okt 2009)

Danke für die Antwort !
Da ist Screenshot von allen Lib und jar Dateien


----------



## Marco13 (1. Okt 2009)

???: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


----------

