Table of Contents
PyOpenCLには別に、OpenCLのclCreateBuffer関数のバインディングであるpyopencl.Bufferクラスを経由する方式もあり、こちらを使っての演算をpyopencl.arrayライブラリと比較すると数百倍、数千倍のスケールでパフォーマンスが向上します。この2つのAPIの関連性は弱く、全く別のライブラリと考えても良いと思います。
前の項目では、to_deviceメソッドを使ってデバイスのメモリ空間にホストのメインメモリのデータをコピーする方式を紹介しました。
to_deviceメソッドは、pyopencl.arrayライブラリのインスタンスメソッドですが、このarrayライブラリについて解説をしておきたく思います。
arrayはPyOpenCLランタイムライブラリから一定の独立性を確保しており、OpenCLの基本関数の派生メソッドを使わなくても、並列処理を可能とします。
しかしpyopencl.arrayライブラリを経由した演算は効率が悪く、現時点では実用レベルのパフォーマンスではありません。Arrayクラスを使うのは配列の初期化を除き避けたほうが良いかと思います。
Copyright 2018-2019, by Masaki Komatsu