Проблема с расширением printf ATI OpenCL с аргументом char *, переданным функции - PullRequest
1 голос
/ 06 апреля 2011

Я использую OpenCL на карте ATI с включенным расширением printf. Я написал функцию для вывода переменных:

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

Этот код работает, как и ожидалось, когда он скомпилирован как обычный C, но если я вызываю его в OpenCL с

printVar("foo", 0.123);

результатом всегда является некоторый случайный символ, за которым следует 0.123 вместо "foo: 0.123". Я предполагаю, что у компилятора есть проблемы с распознаванием строки char *, есть ли обходной путь или исправление, чтобы я мог заставить функцию работать?

1 Ответ

0 голосов
/ 06 апреля 2011

Как я уже упоминал в своем комментарии, я также получаю такое же поведение, однако могу предложить простой обходной путь для варианта использования, который вы показали, т.е. когда строка известна во время компиляции, мы можем просто использовать вместо нее оператор define:

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