2010-05-11 5 views
7

Ich bin auf der Suche nach einer Art und Weise der Verwendung der Anzahl-Crunching-Fähigkeit einer GPU (mit Java vielleicht?) Zusätzlich zu den mehreren Kernen, die die Zielmaschine hat. Ich werde daran arbeiten, den A * -Algorithmus (derzeit) zu implementieren, aber in der Zukunft hoffe ich, ihn durch einen genetischen Algorithmus zu ersetzen. Ich habe mir Project Fortress angesehen, aber da ich meine GUI in JavaFX erstelle, würde ich es vorziehen, nicht zu weit von einer JVM abzukommen.HPC (hauptsächlich auf Java)

Natürlich, sollte keine praktikable Lösung verfügbar sein, werde ich auf die einfachste zu implementierende Lösung migrieren.

Antwort

3

Parallel Colt könnte von Interesse sein.

+0

Benötigt es implizite Parallelität? Ich lese den Nebenläufigkeitsabschnitt, aber es scheint nichts über hardwarespezifische Vorteile zu geben. – Insectatorious

+0

Die Webseite schlägt vor, dass sie nach Möglichkeit automatisch mehrere CPU-Kerne verwenden wird. Ich habe diese Version von Colt selbst nicht nur für die Originalbibliothek verwendet, auf der diese basiert. – Mark

5

Wenn Sie an HPC mit GPUs interessiert sind, dann können Sie vielleicht jCuda aussehen. Dies bietet Java-Bindungen für CUDA sowie Zugriff auf CUDA FFT, CUDA BLAS und CUDA DPP. Ich habe keine Leistungsberichte über diese Bibliothek gesehen, daher kann ich nicht garantieren, dass sie sehr gut sein wird.

Darüber hinaus bin ich mir nicht wirklich sicher. Wenn Sie daran interessiert sind, diese Art von Dingen als Bildungsübung zu tun, dann sollte Java gut genug sein, aber wenn Sie HPC dringend benötigen, werden Sie wahrscheinlich in C implementieren und die Java Native Interface verwenden wollen kommuniziere mit ihm.

+0

Prost reifen! Ich werde den Link so schnell wie möglich anschauen. – Insectatorious

4

Morten Nobel Joergensen hat ein blog post zeigt, wie ein Mandelbrot Set JOGL mit erstellen - Java Bindings für OpenGL

Allerdings, wenn Sie generischen Computing wollen, anstatt Grafiken, dann würden Sie nach den Java-Bindungen sein für OpenCL , aus dem Sie zwischen JOCL oder JOCL oder JavaCL wählen können.

Wikipedia's page zeigt, wie OpenCL verwendet werden kann, um eine schnelle Fourier-Transformation zu berechnen.

+0

Süß. In diesem Beispiel rendert er ein 3D-Bild mit einer Kamera ohne Perspektive als 2D-Bild. Wäre es möglich, rohe Verarbeitung 'Umph!' mit JOGL dann? Ich frage, weil ich OpenGL noch nie zuvor benutzt habe und ich nicht den Sprung wagen will, es sei denn, es wird meinen Bedürfnissen entsprechen. – Insectatorious

+0

Hätten Sie Empfehlungen, welche OpenCL-Bindung verwendet werden soll? –

+0

@Insektatorious - Nein, also habe ich meine Antwort aktualisiert, um nützlicher zu sein. –

2

Werfen Sie einen Blick auf JPPF, ist es eine sehr schöne und Open-Source-Java-Grid-Computing-Umgebung

Verwandte Themen