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