Skip to content

Boxtree code exercises possible regression in loopy

Based on boxtree/tools.py:

import loopy as lp

def get_2d_knl(context, dtype):
    knl = lp.make_kernel(
        "{[i]: 0<=i<n}",
        """                                                                                                                                              
        <> phi = 2*M_PI/n * i                                                                                                                            
        x[i] = 0.5* (3*cos(phi) + 2*sin(3*phi))                                                                                                          
        y[i] = 0.5* (1*sin(phi) + 1.5*sin(2*phi))                                                                                                        
        """, [
            lp.GlobalArg("x,y", dtype, shape=lp.auto),
            lp.ValueArg("n", np.int32),])
    knl = lp.split_iname(knl, "i", 128, outer_tag="g.0", inner_tag="l.0")
    return lp.CompiledKernel(context, knl)

import pyopencl as cl
import numpy as np
queue = cl.CommandQueue(cl._csc())
evt, result = get_2d_knl(queue.context, np.float)(queue, n=15)

I get the error:

    evt, result = get_2d_knl(queue.context, np.float)(queue, n=15)
  File "/home/wala1/src/loopy/loopy/compiled.py", line 891, in __call__
    out_host, **kwargs)
  File "<generated function invoke_loopy_kernel_loopy_kernel>", line 160, in invoke_loopy_kernel_loopy_kernel
  File "<generated function invoke_loopy_kernel_loopy_kernel>", line 36, in _lpy_host_loopy_kernel
  File "/home/wala1/src/pyopencl/pyopencl/cffi_cl.py", line 1867, in set_arg
    self._set_arg_clkernelarg(self, arg_index, arg)
TypeError: _set_arg_clkernelarg() takes 3 positional arguments but 4 were given

@inducer, the above code was working a few days ago. Should recent changes have broken this?