使用CUDA浮动保证是4个字节吗?

mch*_*hen 2 cuda gpgpu

我想用来cudaMemcpy创建一个向量(1,...,1),这样我就可以做一些事情,比如对矩阵的行/列求和,或者用CUBLAS向矩阵添加向量.代码将在不同的平台上运行,所以

  • 我怎样才能保证我总是会使用4字节浮点数?
  • sizeofGPU上是否有数据类型的功能,或者设备是否始终使用与主机相同的数据类型规范?

Rob*_*lla 5

首先回答您的第二个问题,设备始终使用与主机编译器相同的数据类型规范.因此,您可以sizeof(...)在主机上使用以确定相关尺寸.如果不是这样的话,许多事情都将被打破.

那么,为了回答你的第一个问题,我们只需要在CUDA支持的主机端编译器中询问float总是32位的表示?答案是肯定的.

另外,请注意,对于大多数平台而言,这通常是正确的.找到一个不是32位浮点数的系统很困难.但据我所知,没有通用的C或C++要求浮点数为32位.别人可能证明我错了.