2012-11-21 5 views
6

Clytherを高性能タスクに使用することを考えています。 Pythonだけを使ってOpenCLカーネルを書くのは面白いですが、私はパフォーマンスのギャップについて疑問に思っています。クリザーオーバーヘッドのサイズは?

クリヤーがうまくいくタスクは何ですか?悪いですか?クリザ生成カーネルは良いかどうか?

いくつかのベンチマークを見つけることはできますか?

+0

ベンチマークは1つしか見つかりませんでした。http://srossross.github.com/Clyther/performance_python.html#performance-results – Natan

答えて

4

CLYtherの主なエントリポイントは、clyther.taskclyther.kernelのデコレータです。これらのデコレータのいずれかで関数を装飾すると、関数は呼び出されたときにOpenCLにコンパイルされます。

CLytherは、Python言語のサブセットのコンパイラです。これはあなたのPythonのサブセットコードをOpenCLにコンパイルするので、カーネルの実際の実行時間はOpenCLへのインタフェースの間で多くの違いはありません。 CLytherの実際のオーバーヘッド(Pythonとのすべてのインターフェイスと同様)は、OpenCL関数の呼び出し、またはCLyther/PythonとOpenCL間のデータの移動に由来します。

CLytherのperformanceを示すベンチマークは、documentationで利用できます。ソースtarballには、ベンチマークプログラムのC++およびFORTRAN版、ラプラス方程式ソルバーが含まれていますので、それらを使用してベンチマーク結果を再現することができます。

個人的には、OpenCL計算が必要な問題の大半でCLytherを効果的に使用できると私は信じています。