16.6. イメージの読み込みと書き込み

16.6.1. enqueue_read_imageとenqueue_write_image

enqueue_read_image関数はイメージオブジェクトまたはイメージ配列オブジェクトからホストメモリに読み込むコマンドを挿入します。

Note

詳しくは「表:clEnqueueReadImageとclEnqueueWriteImage」(Table B.44, “表:clEnqueueReadImageとclEnqueueWriteImage”)を参照ください。

関数の定義は以下のようになります。

pyopencl.enqueue_read_image(
    queue, #(1)
    mem, #(2)
    origin, #(3)
    region, #(4)
    hostbuf, #(5)
    row_pitch=0, #(6)
    slice_pitch=0, #(7)
    wait_for=None,
    is_blocking=True
)

(1)

読み込みコマンドを挿入するコマンドキューを指定。command_queueとimageは同じOpenCLコンテキスト上で生成される必要がある。

(2)

有効なイメージオブジェクトまたはイメージ配列オブジェクトを指定します。

(3)

読み込みを行うイメージ内での (x, y, z) オフセットをピクセルで指定。image が2Dイメージオブジェクトであるとき、origin[2] で指定する z 値は0でなければなりません。

(4)

1D、2D、3D矩形領域の(width, height, depth) をピクセルで定義。 2D矩形領域の(width, height)をピクセルで定義し、2Dイメージ配列のイメージ個数の定義。1D矩形領域の(width)をピクセルで定義し、1Dイメージ配列のイメージ個数を定義。

(5)

読み込むイメージデータの保存先となるホストメモリバッファを指定。

(6)

各行が使用する長さをバイトで指定。この値は、画素のバイトサイズ*width以上となる必要がある。row_pitchに0を設定すると、画素のバイトサイズ*widthに基づいて適切な長さが計算される。

(7)

読み込み、または書き込まれる3Dイメージ内の3D領域の各2Dスライス、または1Dまたは2Dイメージ配列の各イメージが使用する長さを指定(バイトで表す)。 イメージが1Dまたは2Dの場合は、この引数は0となります。

enqueue_write_image関数はホストメモリからイメージオブジェクトまたはイメージ配列オブジェクトへの書き込みを行うコマンドを挿入します。

pyopencl.enqueue_write_image(
    queue, #(1)
    mem, #(2)
    origin, #(3)
    region, #(4)
    hostbuf, #(5)
    row_pitch=0, #(6)
    slice_pitch=0, #(7)
    wait_for=None,
    is_blocking=True
)

(1)

書き込みコマンドを挿入するコマンドキューを指定。command_queueとimageは同じOpenCLコンテキスト上で生成される必要がある。

(2)

有効なイメージオブジェクトまたはイメージ配列オブジェクトを指定します。

(3)

書き込みを行うイメージ内での (x, y, z) オフセットをピクセルで指定。image が2Dイメージオブジェクトであるとき、origin[2] で指定する z 値は0でなければなりません。

(4)

1D、2D、3D矩形領域の(width, height, depth) をピクセルで定義。 2D矩形領域の(width, height)をピクセルで定義し、2Dイメージ配列のイメージ個数の定義。1D矩形領域の(width)をピクセルで定義し、1Dイメージ配列のイメージ個数を定義。

(5)

書き込むイメージデータの保存先となるホストメモリバッファを指定。

(6)

各行が使用する長さをバイトで指定。この値は、画素のバイトサイズ*width以上となる必要がある。row_pitchに0を設定すると、画素のバイトサイズ*widthに基づいて適切な長さが計算される。

(7)

読み込み、または書き込まれる3Dイメージ内の3D領域の各2Dスライス、または1Dまたは2Dイメージ配列の各イメージが使用する長さを指定(バイトで表す)。 イメージが1Dまたは2Dの場合は、この引数は0となります。

enqueue_write_imageとenqueue_read_imageはバッファオブジェクトの読み書き関数の時と同じように、引数はホストポインタを除き同じものを使います。

Copyright 2018-2019, by Masaki Komatsu