2

C++ で OpenCL ホスト プログラムを作成する場合、次の API を使用して OpenCL カーネルを呼び出します。

cl_int clEnqueueNDRangeKernel (     cl_command_queue command_queue,
    cl_kernel kernel,
    cl_uint work_dim,
    const size_t *global_work_offset,
    const size_t *global_work_size,
    const size_t *local_work_size,
    cl_uint num_events_in_wait_list,
    const cl_event *event_wait_list,
    cl_event *event)

ここで、3 番目の引数は作業次元を設定します。pyopencl を使用する python のように、カーネルをプログラムの一部として次のように呼び出します。

<program_name>.<kernel_name>( <command_queue>, <Global_work_size>,
                              <Local_work_size>, <Parameters_to_kernel.....> )

例えば:

event = program.square( queue, A.shape, None, 
                        A_buf, B_buf, cl.LocalMemory( A.size), np.int32(COUNT) )

では、pyopenclを使用してPythonで「work_dim」を明示的に設定するにはどうすればよいですか?

4

1 に答える 1

2

あなたはそうしない。 work_dimライブラリが一次元配列global_work_offsetなどのサイズを知ることができるように、C/C++ OpenCL API で渡されます。PyOpenCL では、これらのサイズはglobal_sizelocal_size、およびとして渡されたオブジェクトから推測されますglobal_offset

于 2012-10-22T11:38:27.270 に答える