2017-04-05 31 views
0

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

那么代码中的sizeof(size_t)应该是什么意思来运行一个GPU?

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

回答

1

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

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

这将由GPU的编译器编写器决定,使size_t具有足够大的尺寸,以便可以在GPU上尽可能分配最大的分配。正如你所说,这可能是2的权力(但不能保证)。

用于表示任何内存位置的类型是void *