как явно установить размер работы в pyopencl?

При написании хост-программы OpenCL на C++ мы используем следующий 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)

Здесь третий аргумент задает размер работы. Где, как и в python, использующем pyopencl, мы вызываем ядро ​​​​как часть программы:

<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) )

Итак, как явно установить «work_dim» в python с помощью pyopencl?


person Yash    schedule 22.10.2012    source источник


Ответы (1)


Вы не знаете. work_dim передается в C/C++ OpenCL API, чтобы библиотека могла знать размер одномерных массивов global_work_offset и т. д.; в PyOpenCL эти размеры выводятся из объектов, передаваемых как global_size, local_size и global_offset.

person Jonathan Dursi    schedule 22.10.2012