Fail to set kernel arguments, error code -38 returned

Hi there. I am new to OpenCL, so I thought I will start by writing a small kernel to see if it works:

// kernel.cl
__kernel void kernel(__global float* ez, int t, int H, int L, int W) {
    float ddx, dt;
    float fre = 1e9;
    int is, js, ks;

    ddx = 0.01;
    dt = ddx / 6e8;
    is = H / 2;
    js = L / 2;
    ks = W / 2;

    float value = sin(2 * M_PI * fre * dt * t);

    ez[is * L * W + js * W + ks] = value;
}

My main program main.cpp:

    int t = 10;
    int H = 100, L = 100, W = 100;
    size_t size = H * L * W * sizeof(float);
    float *ez = (float *)malloc(size);
    // OpenCL context setup and kernel reads skipped
    cl_mem ez_mem = clCreateBuffer(context, CL_MEM_READ_WRITE, size, NULL, &err);
    CHECK_ERROR(err, "Failed to create buffer for ez");
    err = clEnqueueWriteBuffer(queue, ez_mem, CL_TRUE, 0, size, ez, 0, NULL, NULL);
    CHECK_ERROR(err, "Failed to write data to buffer ez");
    err = clSetKernelArg(kernel, 0, sizeof(cl_mem), &ez_mem);
    err |= clSetKernelArg(kernel, 1, sizeof(int), &t);
    err |= clSetKernelArg(kernel, 2, sizeof(int), &H);
    err |= clSetKernelArg(kernel, 3, sizeof(int), &L);
    err |= clSetKernelArg(kernel, 4, sizeof(int), &W);
    CHECK_ERROR(err, "Failed to set kernel arguments for kernel()");

The error I got:

$ ./opencl_program
Failed to set kernel arguments for kernel(): -38

I also invoked CHECK_ERROR() after setting up the memory buffer and writing to it, and those did not raise any error. What could be the cause of the issue? Thank you.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.