Hi all,
I have recently started coding OpenCL and have a project (medical physics) with a few tens of kernels that I run using the C API through a custom C++ wrapper (resource management, exceptions, present only minimal needed interface).
I had problems with one of the kernels and after stripping it I isolated the issue to depend only on the number of float3 parameters. It seems like kernels with >8 float3 parameters breaks when setting parameters on an Intel device (works fine with NVidia). clSetKernelArg returns CL_INVALID_ARG_SIZE for the 9th parameter. Reducing the number of parameters to 8 or fewer fixes the problem, as does changing the stripped kernel (and host code) to use float or float4 instead of float3.
Stripped kernel verified to cause the problem:
kernel void tst( float3 x1, float3 x2, float3 x3,
float3 x4, float3 x5, float3 x6,
float3 x7, float3 x8, float3 x9 ) {}
OS: Win7 x64
Intel device:
name: Intel® Xeon® CPU X5550 @ 2.67GHz
driverVersion: 1.1
version: OpenCL 1.1 (Build 13785.5219)
NVidia device:
name: GeForce GTX 560 Ti
driverVersion: 280.26
version: OpenCL 1.1 CUDA
I would be very grateful for any insight you can offer. Thanks!