ATI OpenCL printf extension issue with char* argument passed to a function

704 Views Asked by At

I use OpenCL on an ATI card with the printf extension enabled. I've written a function to print out variables:

void printVar(constant char* name, float var)
{
    printf("%s: %f\r\n", name, var);
}

This code works as expected when compiled as plain C, but if i invoke it in OpenCL with

printVar("foo", 0.123);

the result is always some random char followed by 0.123 instead of "foo: 0.123". I guess the compiler has problems with recognizing the char* string, is there a workaround or a fix so i can get the function working?

1

There are 1 best solutions below

0
On BEST ANSWER

As I mentioned in my comment I also get the same behavior, however I can suggest a simple workaround for the use case you showed, I.e. when the string is known at compile time we could just use a define statement instead:

#define PRINTVAR(N,X) (printf(N ": %f\r\n", X))