2012-10-22 19 views
2

當寫C OpenCL的宿主程序++中,我們使用下面的API調用的OpenCL內核:如何在pyopencl中明確設置工作維度?

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?

回答

2

你不知道。在C/C++ OpenCL API中傳遞work_dim,以便該庫可以知道一維數組的大小global_work_offset等;在PyOpenCL中,可以從global_size,local_sizeglobal_offset傳遞的對象中推斷出這些大小。

+0

哦!好。非常感謝你 – Yash