gpu上size_t的sizeof是多少?

时间:2017-04-05 03:22:10

标签: c sizeof

我的理解是size_t是一个足以表示(或解决)给定体系结构中任何内存位置的类型。 例如,在32位机器上,size_t应该能够表示至少2 ^ 32个值。这意味着在32位架构中sizeof(size_t)必须> = 4,对吧?

那么在运行gpu的代码上应该是sizeof(size_t)应该是什么?

由于许多gpus的大小超过4gb,因此sizeof(size_t)必须至少为5.但我认为它是8,用于对齐目的。

1 个答案:

答案 0 :(得分:1)

粗略地说,size_t应该能够表示任何单个分配对象的大小。但这可能小于总地址空间。

例如,在16位MS-DOS程序中,一个内存模型有一个16位size_t,即使有几兆字节的内存可用,指针也是32位。但是你无法分配任何大于64K的特定内存块。

GPU的编译器编写器要使size_t具有足够大的尺寸,以便在GPU上进行最大可能的分配。如你所说,这可能是2的幂(但不保证)。

用于表示任何记忆位置的类型为void *