cuda程序中的数据类型转换的问题

我在做图像直方图统计的啥时候,由于输入的图像数据是float型的,请问在做统计的时候是最好在host端就进行数据类型转换好,还是在kernel函数内中进行强制数据转换好一点,如果在kernel函数内转换,传统的C函数的强制类型转换还能用吗,我在kernel函数内进行转换是出现了错误

楼主您好,建议直接在kernel内转换,而不是复制到CPU端转换。

您直接转换无压力的,即使您的算法是纯float->int的转换的,即使是在转换效率最低的3.x上(1/6), 您依然可以轻松压满贵卡的显存的。无压力的。

如果您的转换不是单独的kernel,而是参杂在其他操作里面,那么此转换操作的代价将进一步降低,完全无压力的。

C风格的强制转换在CUDA C里能用的,例如有
float zhuzhen = …; 然后
int wu = (int)zhuzhen; //这个不是错误的。

为何您出现错误,请您检查下是否您的写法有问题?例如将(int)写成了(int)?
一般来说这个操作无问题的。

感谢来访,欢迎反馈。

谢谢版主详细的回答