2017-04-05 33 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 *