Я заметил, что при вызове функции printf
(с расширением cl_intel_printf
) одна и та же переменная типа double
(с 8-байтовым выравниванием), напечатанная несколько раз, дает разные значения;один из них правильный, другой фальшивый (считывание 4 байта).Означает ли это, что, как и в c / c ++, выровненные типы данных должны передаваться не по значению, а только по указателям (или по ссылке в c++
)?
(В более общем случае, каково соглашение о вызове функциидля OpenCL? Я где-то читал, что все вызовы функций являются встроенными, но OpenCL in Action
говорит иначе. Это определяется реализацией?)