OpenCL Tutorial
-
Hallo liebe Community,
in der Uni haben wir openCL in der Vorlesung gehabt und ich finde es ziemlich interessant. Ich möchte das nun lernen!
Leider komme ich mit den Tutorials von NVIDIA auf keinen grünen Zweig. Es wird z.B. grundsätzlich nie erklärt, welche Header ich brauche und wie ich mein System überhaupt vorbereite.Plattform: Win7 + Microsoft Visual Studio
Kann jemand OpenCL? Wie komme ich da gut rein? Bücher? Tolle Internetseiten?
Danke danke!
Viele Grüße,
anjohn
-
anjohn schrieb:
Leider komme ich mit den Tutorials von NVIDIA auf keinen grünen Zweig. Es wird z.B. grundsätzlich nie erklärt, welche Header ich brauche und wie ich mein System überhaupt vorbereite.
Treiber installieren, SDK installieren,
<CL/cl.h>
inkludieren. Natürlich musst du noch den Pfad zu diesem Verzeichnis angebenanjohn schrieb:
Kann jemand OpenCL? Wie komme ich da gut rein? Bücher? Tolle Internetseiten?
Wenn du bis zum Sommer wartest, kann ich dir ein Tutorial liefern. Schreibe aktuell gerade an einem in Deutsch als Teil meiner Arbeit
Ich persönlich habe viel durch den Programming Guide und co von Nvidia, AMD Dokumentation, der Online API Referenz der Khronos Group und einigen englischen Blogs und co gelernt:
http://enja.org/category/tutorial/advcl/
http://www.codeproject.com/search.aspx?aidlst=1177
http://knol.google.com/k/computing-with-nvidia-s-cuda-and-opencl#
http://www.bealto.com/mp-mandelbrot.html
http://opencl.codeplex.com/wikipage?title=OpenCL Tutorials
http://www.macresearch.org/openclGrüssli
-
Danke für die Links!
Also komme ich um ein SDK von Nvidia oder AMD nicht herum? Für OpenGL bzw GLSL haben wir in der Übung zur Vorlesung auch nur Header und Libs benötigt...Dachte aufgrund der Herstellerunabhängigkeit von OpenCL brauche ich keinen Herstellerkram.
Kann es sein, dass ich kein SDK brauche, wenn ich OpenCL-Code als Textdatei einlese? Damit hätte ich dann keinen extra Compiler, den hatte ich für GLSL-Code ja auch nicht. Für einen Anfänger womöglich nicht empfehlenswert
Dravere schrieb:
Wenn du bis zum Sommer wartest, kann ich dir ein Tutorial liefern. Schreibe aktuell gerade an einem in Deutsch als Teil meiner Arbeit
GrüssliKlar kann ich warten, wird ja nicht schlecht
Über ein deutsches Tutorial würde ich mich unglaublich freuen! Sowas gibts ja bislang garnicht!Darf ich fragen, was das für eine Arbeit ist?
Viele Grüße,
anjohn
-
anjohn schrieb:
Also komme ich um ein SDK von Nvidia oder AMD nicht herum? Für OpenGL bzw GLSL haben wir in der Übung zur Vorlesung auch nur Header und Libs benötigt...
Dachte aufgrund der Herstellerunabhängigkeit von OpenCL brauche ich keinen Herstellerkram.
Naja, du brauchst ja zumindest einen Treiber, welcher OpenCL implementiert und der wird vom Hersteller geliefert. Du kannst aber grundsätzlich mit jedem SDK entwickeln, ob AMD, Nvidia oder Intel spielt da keine Rolle. Der Aufbau ist immer derselbe. Es gibt einen Ordner
CL
und darin befindet sich die Headerdateicl.h
, welche man auch direkt von Khronos beziehen kann. Also die Headerdateicl.h
ist standardisiert.anjohn schrieb:
Kann es sein, dass ich kein SDK brauche, wenn ich OpenCL-Code als Textdatei einlese? Damit hätte ich dann keinen extra Compiler, den hatte ich für GLSL-Code ja auch nicht. Für einen Anfänger womöglich nicht empfehlenswert
Du benötigst keinen anderen Kompiler. Das ist alles C89 und C++03 kompatibel. Der Code, welcher dann auf dem Device läuft, wird zur Laufzeit auf dem Zielrechner kompiliert. Jeder OpenCL Treiber muss dazu einen entsprechenden OpenCL C Kompiler mitliefern.
Vielleicht verwirrt dich hier der Begriff SDK ein wenig. OpenCL wird bei Nvidia, AMD und Intel grundsätzlich als Teil eines umfangreicheren Paketes geliefert. Bei Nvidia kommt halt noch CUDA mit, zudem der Nvidia Profiler, der nvcc, usw. Brauchst du für OpenCL allerdings alles nicht. Du brauchst nur die OpenCL Bibliothek und die Headerdateien aus dem SDK.
anjohn schrieb:
Darf ich fragen, was das für eine Arbeit ist?
Meine Bachelor Diplomarbeit. Hauptziel ist es eine Lagrangian Simulation von OpenFOAM auf die Graphikkarte zu verlagern. Ein Masterstudent hat einen Prototyp zuerst mal in CUDA implementiert. Letztes Semester habe ich diesen nach OpenCL portiert und dieses Semester geht es um weitere Optimierungen und Erweiterungen. Und ein Teil dieser Arbeit soll halt auch ein Tutorial zu OpenCL sein
Grüssli
-
Ich hab damals im Rahmen meiner Bachelorarbeit auch ein CUDA-Tutorial geschrieben und OpenCL damit verglichen.
Das Buch Programming Massively Parallel Processors (allgemein sehr empfehlenswert) hat ein Kapitel über OpenCL das ich sehr mochte. Klar, der Rest ist über CUDA, aber die Techniken sind ja in beiden Sprachen sehr ähnlich.
MfG SideWinder
-
Ich bin mit dem Buch "OpenCL Programming Guide"
http://www.amazon.de/OpenCL-Programming-OpenGL-Aaftab-Munshi/dp/0321749642#_
gut zurecht gekommen. Es ist aber in englisch.
-
Oh Gott...und WAS IS DAAS??? http://developer.amd.com/zones/OpenCLZone/publications/assets/MakingOpenCLSimplewithHaskell.pdf
@SideWinder
Danke, das Buch das du empfiehlst, besorg ich mir gleich und das hier http://www.amazon.de/GPU-Computing-Gems-Applications-Gpu/dp/0123849888/
gleich noch mit dazu