PyOpenCL,无法设置参数。无效的值

ra91

我已经获得了提供的OpenCL内核以在C环境中执行,但是当我尝试使用带有提供的代码的PyOpenCL运行它时,出现以下错误:

> Traceback (most recent call last):
>  File "integral.py", line 38, in <module>
>    example.execute()
>  File "integral.py", line 26, in execute
>    self.program.integrate_f(self.queue, self.a, None, self.a, self.dest_buf)
>  File "/Library/Python/2.7/site-packages/pyopencl-2013.3-py2.7-macosx-10.9-
> x86_64.egg/pyopencl/__init__.py", line 506, in kernel_call
>    self.set_args(*args)
>  File "/Library/Python/2.7/site-packages/pyopencl-2013.3-py2.7-macosx-10.9-
> x86_64.egg/pyopencl/__init__.py", line 559, in kernel_set_args
>    % (i+1, str(e), advice))
> pyopencl.LogicError: when processing argument #1 (1-based): Kernel.set_arg failed: invalid value -
> invalid kernel argument

所以看来我给内核传递了一个无效的参数,但我不知道为什么它抱怨这个。有任何想法吗?

import pyopencl as cl
import numpy

class CL:

    def __init__(self):
        self.ctx = cl.create_some_context()
        self.queue = cl.CommandQueue(self.ctx)

    def loadProgram(self, filename):
        #read in the OpenCL source file as a string
        f = open(filename, 'r')
        fstr = "".join(f.readlines())
        print fstr
        #create the program
        self.program = cl.Program(self.ctx, fstr).build()

    def popCorn(self, n):
        mf = cl.mem_flags

        self.a = int(n)

        #create OpenCL buffers
        self.dest_buf = cl.Buffer(self.ctx, mf.WRITE_ONLY, bumpy.empty(self.a).    nbytes)    

    def execute(self):
        self.program.integrate_f(self.queue, self.a, None, self.a, self.dest_buf)
        c = numpy.empty_like(self.dest_buf)
        cl.enqueue_read_buffer(self.queue, self.dest_buf, c).wait()
        print "a", self.a
        print "c", c


if __name__ == "__main__":
    example = CL()
    example.loadProgram("integrate_f.cl")
    example.popCorn(1024)
    example.execute()
__kernel void integrate_f(const unsigned int n, __global float* c)
{
    unsigned int i = get_global_id(0);
    float x_i = 0 + i*((2*M_PI_F)/(float)n);
    if (x_i != 0 || x_i != 2*M_PI_F)
    {
        c[i] = exp(((-1)*(x_i*x_i))/(4*(M_PI_F*M_PI_F)));
    }
    else c[i] = 0;
}
价格

您的内核调用有两个错误。与回溯相关的错误self.a是一个Python int对象,内核期望使用OpenCL unsigned int,具体来说是32位。您需要通过使用(例如)显式传递32位整数numpy.int32(self.a)第二个错误是全局工作量参数必须是一个元组。

因此,用于内核调用的正确代码应为:

self.program.integrate_f(self.queue, (self.a,), None, numpy.int32(self.a), self.dest_buf)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法处理参数,因为参数“名称”的值无效

来自分类Dev

无法连接到数据库:PG::InvalidParameterValue:错误:参数“TimeZone”的无效值:“UTC”:设置时区“UTC”

来自分类Dev

下拉列表中的所选值无效:无法设置所选值

来自分类Dev

OpenShift设置无效参数

来自分类Dev

无法构造数据类型日期,某些参数的值无效

来自分类Dev

参数“目录”的值无效

来自分类Dev

参数“目录”的值无效

来自分类Dev

PyOpenCL | 无法启动内核

来自分类Dev

ConvertFrom-Json返回“由于参数“名称”的值无效,因此无法处理参数”。

来自分类Dev

Swift:无法在可变对象参数上设置属性值

来自分类Dev

无法解决“传递的无效参数”

来自分类Dev

Azure:参数“ requestid”的值无效

来自分类Dev

Grub2不更新启动列表。引导错误:无法设置MokListKT:无效参数

来自分类Dev

无法构造数据类型日期时间,某些参数的值无效

来自分类Dev

参数“ v”的值无效:无法将“”转换为数字;给定字符串terraform eks模块

来自分类Dev

无法构造数据类型日期时间,某些参数的值无效

来自分类Dev

无法设置属性值

来自分类Dev

无法删除diskpart中的分区-参数无效?

来自分类Dev

cp:无法创建常规文件:无效的参数

来自分类Dev

无法在FreeBSD上安装USB:无效的参数

来自分类Dev

systemctl无法启动服务,参数无效

来自分类Dev

gitkraken 无法连接到 gitlab 无效参数

来自分类Dev

是否为参数“ appIdName”提供了“无效值”?

来自分类Dev

terraform错误:模块参数的值无效

来自分类Dev

字符串参数的 Geoserver 无效值

来自分类Dev

MAMP MySQL无法连接:无效的设置。

来自分类Dev

phpmyadmin-无法连接:无效设置

来自分类Dev

无法动态设置setVisibility()参数

来自分类Dev

无法设置Matlab类的参数

Related 相关文章

  1. 1

    无法处理参数,因为参数“名称”的值无效

  2. 2

    无法连接到数据库:PG::InvalidParameterValue:错误:参数“TimeZone”的无效值:“UTC”:设置时区“UTC”

  3. 3

    下拉列表中的所选值无效:无法设置所选值

  4. 4

    OpenShift设置无效参数

  5. 5

    无法构造数据类型日期,某些参数的值无效

  6. 6

    参数“目录”的值无效

  7. 7

    参数“目录”的值无效

  8. 8

    PyOpenCL | 无法启动内核

  9. 9

    ConvertFrom-Json返回“由于参数“名称”的值无效,因此无法处理参数”。

  10. 10

    Swift:无法在可变对象参数上设置属性值

  11. 11

    无法解决“传递的无效参数”

  12. 12

    Azure:参数“ requestid”的值无效

  13. 13

    Grub2不更新启动列表。引导错误:无法设置MokListKT:无效参数

  14. 14

    无法构造数据类型日期时间,某些参数的值无效

  15. 15

    参数“ v”的值无效:无法将“”转换为数字;给定字符串terraform eks模块

  16. 16

    无法构造数据类型日期时间,某些参数的值无效

  17. 17

    无法设置属性值

  18. 18

    无法删除diskpart中的分区-参数无效?

  19. 19

    cp:无法创建常规文件:无效的参数

  20. 20

    无法在FreeBSD上安装USB:无效的参数

  21. 21

    systemctl无法启动服务,参数无效

  22. 22

    gitkraken 无法连接到 gitlab 无效参数

  23. 23

    是否为参数“ appIdName”提供了“无效值”?

  24. 24

    terraform错误:模块参数的值无效

  25. 25

    字符串参数的 Geoserver 无效值

  26. 26

    MAMP MySQL无法连接:无效的设置。

  27. 27

    phpmyadmin-无法连接:无效设置

  28. 28

    无法动态设置setVisibility()参数

  29. 29

    无法设置Matlab类的参数

热门标签

归档