2

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

  • 我如何保证我总是使用 4 字节浮点数?
  • GPU上有sizeof数据类型的功能,还是设备总是使用与主机相同的数据类型规范?
4

1 回答 1

5

首先回答您的第二个问题,设备始终使用与主机编译器相同的数据类型规范。所以你可以sizeof(...)在主机上使用来确定相关的大小。如果不是这样,很多东西都会被破坏。

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

顺便说一句,请注意,对于大多数平台而言,这通常是正确的。很难找到具有 32 位浮点数以外的系统。但据我所知,没有一般的 C 或 C++ 要求 float 为 32 位。别人可能会证明我错了。

于 2013-05-16T17:33:52.973 回答