2012-11-21 9 views
6

Ich denke über die Verwendung Clyther für eine Hochleistungsaufgabe. Es ist aufregend, OpenCL-Kernel nur mit Python zu schreiben, aber ich frage mich, ob es eine Leistungslücke gibt.Welche Größe von Clyther Overhead?

Was sind Aufgaben, bei denen Clyther gut ist? Schlecht in? Sind Clyther-generierte Kernel gut oder nicht?

Ist es möglich, einige Benchmarks zu finden?

+0

Ich konnte nur eine Benchmark finden: http://srossross.github.com/Clyther/performance_python.html#performance-results – Natan

Antwort

4

Wie die Dokumentation sagt, sind die Haupteinstiegspunkte für CLyther seine clyther.task und clyther.kernel Dekoratoren - sobald eine Funktion mit einer dieser Funktionen dekoriert ist, wird die Funktion nach OpenCL kompiliert, wenn sie aufgerufen wird.

CLyther ist ein Compiler einer Teilmenge der Python-Sprache. Es kompiliert Ihren Python-Subset-Code in OpenCL, so dass die tatsächliche Laufzeit des Kernels sich nicht stark von den Schnittstellen zu OpenCL unterscheidet (oder sollte). Der tatsächliche Overhead von CLyther (wie bei allen Schnittstellen mit Python) kommt vom Aufruf der OpenCL-Funktionen oder dem Verschieben von Daten zwischen CLyther/Python und OpenCL.

Benchmarks, die CLYTHERS performance zeigen, sind im documentation verfügbar. Der Quell-Tarball enthält die C++ - und FORTRAN-Edition des Benchmark-Programms, einen Laplace-Gleichungslöser, damit Sie die Benchmark-Ergebnisse selbst reproduzieren können.

Persönlich glaube ich, dass Sie CLyther effektiv auf die meisten Probleme verwenden können, die OpenCL-Berechnung benötigen.