高パフォーマンスのタスクにClytherを使用することを考えています。Python のみを使用して OpenCL カーネルを作成するのはエキサイティングですが、パフォーマンスのギャップについて疑問に思っています。
Clyther が得意とするタスクは何ですか? 苦手?Clyther で生成されたカーネルは適切ですか?
いくつかのベンチマークを見つけることは可能ですか?
ドキュメントに記載されているように、CLyther の主なエントリ ポイントはclyther.task
とclyther.kernel
デコレータです。関数がこれらのいずれかで装飾されると、関数は呼び出されたときに OpenCL にコンパイルされます。
Clyther は、Python 言語のサブセットのコンパイラです。Python サブセット コードを OpenCL にコンパイルするため、カーネルの実際の実行時間は、OpenCL へのインターフェイス間で大きく異なることはありません (またはすべきではありません)。Clyther の実際のオーバーヘッド (Python とのすべてのインターフェイスと同様) は、OpenCL 関数の呼び出し、または Clyther/Python と OpenCL 間のデータの移動から発生します。
CLyther のパフォーマンスを示すベンチマークは、ドキュメントで利用できます。ソース tarball には、ベンチマーク プログラムの C++ および FORTRAN 版、ラプラス方程式ソルバーが含まれているため、それらを使用してベンチマーク結果を自分で再現できます。
個人的には、OpenCL 計算が必要な問題の大部分で Clyther を効果的に使用できると信じています。