【发布时间】:2014-01-04 15:40:46
【问题描述】:
CUDA 编译器具有生成 32 位或 64 位 PTX 的选项。这些有什么区别?就像 x86 一样,NVidia GPU 实际上有 32 位和 64 位 ISA?还是仅与主机代码有关?
【问题讨论】:
-
+Sagar Masuti:我看过这个,但对我的问题真的没有帮助
CUDA 编译器具有生成 32 位或 64 位 PTX 的选项。这些有什么区别?就像 x86 一样,NVidia GPU 实际上有 32 位和 64 位 ISA?还是仅与主机代码有关?
【问题讨论】:
指针肯定是the most obvious difference。 64 位机器模型支持 64 位指针。 64 位指针可以实现多种功能,例如大于 4GB 的地址空间和unified virtual addressing。统一的虚拟寻址反过来又启用了其他东西,例如GPUDirect Peer-to-Peer。 CUDA IPC API 也取决于 64 位机器型号。
x64 ISA 与 x86 ISA完全不同,它主要是它的扩展。熟悉 x86 ISA 的人会发现 x64 ISA 很熟悉,在需要的地方自然扩展为 64 位。同样,64 位机器模型是将 PTX ISA 的功能扩展到 64 位。大多数 PTX 指令的工作方式完全相同。
32 位机器模型可以处理 64 位数据类型(例如 double 和 long long),因此通常不需要对正确编写的 CUDA C/C++ 源代码进行任何更改即可编译为 32 位机器型号或 64 位机器型号。如果你直接在 PTX 中编程,至少you may have to account for the pointer size differences。
【讨论】: