Erste Schritte mit PyOpenCL

8

Ich habe vor kurzem die Leistungsfähigkeit der GP-GPU (Allzweck-Grafikprozessoreinheit) entdeckt und möchte sie nutzen, um "schwere" wissenschaftliche und mathematische Berechnungen (die sonst große CPU-Cluster erfordern) auf einer einzigen Maschine durchzuführen / p>

Ich weiß, dass es auf einer GPU mehrere Schnittstellen gibt, von denen CUDA und OpenCL am bekanntesten sind. Letzteres hat gegenüber CUDA den Vorteil, dass es auf den meisten Grafikkarten (NVIDIA, AMD, Intel) und nicht nur auf NVIDA-Karten läuft. In meinem Fall habe ich eine gewöhnliche Intel 4000 GPU, die mit OpenCL gut zu kooperieren scheint.

Nun muss ich lernen, wie man mit PyOpenCL arbeitet, um es weiter zu bringen! Also hier kommt die Frage:

Wie kann ich mit PyOpenCL beginnen? Was sind die Voraussetzungen? Muss ich wirklich in Python und / oder OpenCL erfahren sein?

Mein Hintergrund ist Fortran und in der Tat muss ich einen langen Fortran-Code in python (oder pyopencl) übersetzen und parallelisieren, der sich hauptsächlich mit der Lösung von PDEs und Diagonalisierungsmatrizen beschäftigt.

Ich habe die zwei relevanten Websites Ссылка gelesen und Ссылка , aber sie sind nicht wirklich hilfreich für Anfänger (zB Dummies).

Ich weiß einfach nicht, womit ich anfangen soll. Ich möchte nicht zum Experten auf diesem Gebiet werden, nur um zu erfahren, wie man einfache Mathematik und lineare Algebra auf pyopencl parallelisieren kann.

Jeder Rat und jede Hilfe ist sehr willkommen!

    
mario go 24.08.2013, 00:47
quelle

4 Antworten

8

Es scheint, dass Sie nach dem schnellsten und effektivsten Pfad suchen, um PyOpenCL zu lernen. Sie müssen OpenCL (den schwierigen Teil) nicht am Anfang wissen, aber es wird hilfreich sein, Python zu Beginn zu kennen.

Zum schnellen Erlernen der Python-Syntax empfehle ich den Python-Track von Codecademy: Ссылка

Dann ist der parallele Programmierkurs von Udacity ein großartiger Ort, um mit GPGPU zu beginnen (obwohl der Kurs in CUDA unterrichtet wird). Ссылка Dieser Kurs vermittelt Ihnen grundlegende GPGPU-Konzepte sehr schnell. Sie benötigen keine NVIDIA-GPU, um daran teilzunehmen, da alle Kursbewertungen online durchgeführt werden.

Nach (oder während) dem Udacity-Kurs empfehle ich Ihnen, die Code-Beispiele von PyOpenCL zu lesen, auszuführen und anzupassen: Ссылка

    
benshope 25.08.2013, 08:45
quelle
5

Unabhängig von der Sprache der Einführung für GPGPU Computing wie Java, C / C ++, Python, würde ich empfehlen, zuerst mit den Grundlagen des GPGPU Computing und OpenCL zu beginnen.

Sie können die folgenden Ressourcen verwenden, die alle C / C ++ -orientiert sind, aber dies sollten Sie genug Wissen über OpenCL, GPGPU-Hardware geben, um Ihnen den Einstieg zu erleichtern.

  1. AMD OpenCL Universitäts-Toolkit

  2. Heterogenes Computing mit OpenCL Book 2nd Edition

  3. NVIDIA OpenCL-Seiten sind eine weitere ausgezeichnete Resorce

  4. Streamcomputing.eu hat schöne openCL Starter-Artikel.

  5. Intel OpenCL SDK-Lernprogramm

PyOpenCL spezifisch

  1. OpenCL in Aktion: So beschleunigen Sie Grafiken und Berechnungen hat ein Kapitel über PyOpenCL
  2. OpenCL-Programmierhandbuch hat Kapitel PyOpenCL

Beide Bücher enthalten OpenCL 1.1-Implementierung, aber es sollte ein guter Ausgangspunkt für Sie sein.

    
kiranputtur 25.08.2013 06:32
quelle
1

Als jemand, der neu in der GPU-Programmierung ist, fand ich die relevanten Artikel, die Sie erwähnt haben, ziemlich einfach, obwohl ich fand, dass der Beispielcode perfekt von der Kommandozeile lief, aber nicht in Eclipse mit Anaconda. Ich denke, das könnte daran liegen, dass sich der Eclipse-Pyopencl von Anaconda von der Kommandozeilenversion unterscheidet, und ich muss noch herausfinden, wie ich das beheben kann.

Für das Lernen von Python gibt es eine große Anzahl von Ressourcen online einschließlich kostenloser E-Books.

Ссылка Ссылка

sollte ein guter Anfang sein. Wenn Sie Eclipse verwenden, sollten Sie pydev installieren. Installieren Sie in jedem Fall Anaconda Ссылка , da Sie dadurch viel Ärger ersparen können.

Ich schätze eine Woche oder so, um das Niveau der Kenntnisse zu erreichen, die Sie in Python benötigen, solange Sie ein paar einfache Mini-Projekte erstellen. Sie können auch finden, dass mit numpy und scipy und möglicherweise Ipython Notebook müssen Sie nicht in GPU-Programmierung vertiefen

Diese Links können Ihnen helfen, die GPU-Programmierung zu vermeiden oder zumindest zu verzögern. Beachten Sie, dass die Kosten für den Wechsel zwischen den Kernen bedeuten, dass Sie jedem Kern eine erhebliche Menge an Arbeit zuweisen müssen

Ссылка Ссылка

Generell finde ich es effizienter, wenn auch weniger Spaß, immer nur eine Sache zu lernen.

Ich hoffe, das hilft.

    
Alexk 03.05.2016 11:22
quelle
0

Sie können das sehen :)

  1. Einführung 1 Ссылка

  2. Einführung 2 Ссылка

  3. Matrixvervielfachung Ссылка

Yacine Bs 16.03.2018 10:57
quelle

Tags und Links