我注意到调用printf
函数(扩展名为cl_intel_printf
),多次打印类型double
(8字节对齐)的同一变量会给出不同的值;其中一个是正确的,另一个是假的(读取4个字节)。这是否意味着,如在c / c ++中,对齐的数据类型不应该通过值传递,而只能通过指针(或c++
中的引用)传递?
(更一般地说,OpenCL的函数caling约定是什么?我在某处读到所有函数调用都是内联的,但是OpenCL in Action
不这样说。是实现定义的吗?)
答案 0 :(得分:0)
问题是由于为printf的双参数指定%g
而不是%lg
引起的。使用%g
时,某些值无法正确打印。 (编译器似乎没有printf-syntax checker。)