6

CUDA 编译器具有生成 32 位或 64 位 PTX 的选项。这些有什么区别?就像 x86 一样,NVidia GPU 实际上有 32 位和 64 位 ISA?还是仅与主机代码有关?

4

1 回答 1

7

指针肯定是最明显的区别。64 位机器模型支持 64 位指针。64 位指针可以实现多种功能,例如大于 4GB 的地址空间和统一虚拟寻址。统一的虚拟寻址反过来支持其他事情,例如GPUDirect Peer-to-PeerCUDA IPC API也依赖于 64 位机器模型。

x64 ISA 与 x86 ISA 并没有完全不同,它主要是它的扩展。熟悉 x86 ISA 的人会发现 x64 ISA 很熟悉,在需要的地方自然扩展为 64 位。同样,64 位机器模型是将 PTX ISA 的功能扩展到 64 位。大多数 PTX 指令的工作方式完全相同。

32 位机器模型可以处理 64 位数据类型(例如doublelong long),因此通常不需要对正确编写的 CUDA C/C++ 源代码进行任何更改即可编译为 32 位机器模型或 64 位机器模型。如果您直接在 PTX 中编程,您可能必须至少考虑指针大小的差异。

于 2013-12-17T03:13:31.407 回答