OpenCl compiler Aborted OpneCL JIT compiler "Aborted" using float8

Hi,

I noticed a strange behavior; the OpenCL JIT compiler exited badly giving only the word “Aborted” as an error message.

The code was compiling and running smoothly before rewriting it to use 8 components vectors instead of 4 components ones… trying to debug it I discovered that the problem is “one function” since this code is perfectly working:

chi2 = convert_float8(abs_diff(realTrace[i], baseTrace[i]));

while this one is not:

chi2 = native_powr(convert_float8(abs_diff(realTrace[i], baseTrace[i])), (float8)exp);

But the problem is not in this function in particular, since also powr is not working as others I’ve tried…

On the other side, using 4 components vectors, both of the codes are working correctly…

Does some of you know what I am doing wrong? Is this a JIT compiler bug?

p.s.

Some information about my system:

OpenCL SW Info:

CL_PLATFORM_NAME: NVIDIA CUDA

CL_PLATFORM_VERSION: OpenCL 1.0 CUDA 3.0.1

OpenCL SDK Revision: 5537818

OpenCL Device Info:

CL_DEVICE_NAME: GeForce GTX 285

CL_DEVICE_VENDOR: NVIDIA Corporation

CL_DRIVER_VERSION: 195.36.15

Thanks in advance,

Enrico

I don’t know if I can help specifically, especially since I don’t have you code, but the pow() function works for the code below.

__kernel void square (__global int* a, int iNumElements)

{

	// find position in global arrays

	int iGID = get_global_id(0);

	// bound check (equivalent to the limit on a 'for' loop for standard/serial C code

	if (iGID >= iNumElements)

		return;

	// process 

	a[iGID] = pow((float)a[iGID], 2.0f);

}

And I use the following to print out errors whenever something does not compile. Have you tried the build logs to see exactly why the JIT is failing, or is that what you mean by error message?

clError = clBuildProgram(clProgram, 0, NULL, NULL, NULL, NULL);

	if (clError != CL_SUCCESS) {

		std::cerr << "Failed to build program (error " << clError << ") -- showing build log" << std::endl;

		char buildLog[1024];

		clGetProgramBuildInfo(clProgram, clDevice, CL_PROGRAM_BUILD_LOG, sizeof(buildLog), buildLog, NULL);

		std::cout << buildLog << std::endl << std::endl;

		return false;

	}

In this way the code is working fine also for me… defining “a” as an array of float4 is working too, but not defining “a” as an array of float8…

I have a similar code to printout error messages from the JIT compiler, but my program never reach the “cout”, it simply terminates and print “Aborted”…