Arrayのコンストラクタはパラメータが多く毎回インスタンスを生成するのは面倒です。そのためArrayを生成してくれるファクトリーメソッドも複数存在します。
すでに前の項目で紹介したファクトリーメソッドの一つに「to_device」関数がありますが、それ以外にも便利な関数があります。
この項目で紹介するのは以下の5つの関数です。
Numpyに慣れた読者はお気づきになるかもしれませんが、Numpy配列の操作関数に極めて類似しています。
基本的にCommandQueueオブジェクトと、numpy配列を引数に指定するだけで、GPU等のデバイスのメモリ空間にデータを移動・コピーします。
pyopencl.array.to_device( queue, ary, allocator=None, async=False, array_queue=<class 'pyopencl.array._same_as_transfer'>)
引数のaryにはnumpy配列を指定できます。
Arrayのコンストラクタと同様な動作をします。
pyopencl.array.empty( queue, shape, dtype, order="C", allocator=None, data=None)
配列が空の場合に使用できます。
基本的にempty()と同じですが、配列の要素が0で初期化されたArrayのインスタンスが戻されます。
pyopencl.array.zeros( queue, shape, dtype, order='C', allocator=None)
shapeは次元とその要素数を指定でき、dtypeではnumpyデータ型を指定できます。
既に存在するArrayのshapeやdtypeが同じ新しいインスタンスを生成します。
pyopencl.array.empty_like( ary, queue=<class 'pyopencl.array._copy_queue'>, allocator=None)
Copyright 2018-2019, by Masaki Komatsu