首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyOpenCL核参数

PyOpenCL核参数
EN

Stack Overflow用户
提问于 2018-05-16 14:09:48
回答 1查看 1.1K关注 0票数 1

根据文档kernal_name函数需要3个API参数:

代码语言:javascript
复制
program.kernel_name(queue, shape, None, kernal-params...)

但是没有记录Noneshape参数的用途。据我所知,第三个参数是内核函数本身,可以是None,但是第二个参数shape用于什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 14:28:28

根据"OpenCL in Action“一书,参数如下:

  1. 队列
  2. global_size:元组
  3. local_size:元组
  4. *args:内核的参数
  5. global_offset=None
  6. wait_for=None

内核函数是根据代码中称为kernel_name的名称选择的。例如,如果您有一个名为"__kernel void (.)“的内核函数,那么只需调用program.foo(.)在Python里。global_size指定使用多少工作项,本地大小指定工作组的大小。内核参数按照它们在内核函数中出现的顺序传递,该函数由*args表示。

下面是上述书中的一个例子:program.mult(queue, (25,), (25,), scalar, float_buffer, lm)。从程序中创建名为"mult“的内核,将全局和局部大小设置为25,即它是一个一维任务,并将参数标量(类型为numpy.float32)、float_buffer (类型为cl.Buffer)和lm (类型为cl.LocalMemory)传递给内核。相应的内核是:__kernel void mult(float num, __global float *global_floats, __local float4 *local_floats) {...}

当然,您也可以按照纯C语言的方式来做,这需要更多的输入,但好处是非常清楚地看到了发生了什么:

  1. 创建内核: cl.Kernel
  2. set参数: kernel.set_arg
  3. 队列任务: cl.enqueue_nd_range_kernel
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50373192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档