我应该总是将对齐的数据类型作为指针传递吗?

时间:2012-02-03 16:42:26

标签: call opencl memory-alignment

我注意到调用printf函数(扩展名为cl_intel_printf),多次打印类型double(8字节对齐)的同一变量会给出不同的值;其中一个是正确的,另一个是假的(读取4个字节)。这是否意味着,如在c / c ++中,对齐的数据类型不应该通过值传递,而只能通过指针(或c++中的引用)传递?

(更一般地说,OpenCL的函数caling约定是什么?我在某处读到所有函数调用都是内联的,但是OpenCL in Action不这样说。是实现定义的吗?)

1 个答案:

答案 0 :(得分:0)

问题是由于为printf的双参数指定%g而不是%lg引起的。使用%g时,某些值无法正确打印。 (编译器似乎没有printf-syntax checker。)