【问题标题】:CUDA/PTX 32-bit vs. 64-bitCUDA/PTX 32 位与 64 位
【发布时间】:2014-01-04 15:40:46
【问题描述】:

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

【问题讨论】:

标签: cuda nvcc ptx


【解决方案1】:

指针肯定是the most obvious difference。 64 位机器模型支持 64 位指针。 64 位指针可以实现多种功能,例如大于 4GB 的地址空间和unified virtual addressing。统一的虚拟寻址反过来又启用了其他东西,例如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 中编程,至少you may have to account for the pointer size differences

【讨论】:

  • 那么新设备(比如 Kepler 类)都是 64 位的吗?还是有混合?给定一个 64 位设备,我为什么要在 32 位模式下使用它?在 x86 与 x64 中,存在指针大小问题,因此某些进程占用了更多内存。这对 Cuda 来说是同样的问题吗?还是我应该一直使用 64 位而忘记它?
  • 所有较新的设备都支持 32 位或 64 位机器型号。一些较旧的设备仅支持 32 位模型。由于我在回答中给出的原因,在许多方面,64 位模式更好。我能想到使用 32 位模式的唯一原因是某些代码在 64 位模式下可能运行速度较慢,例如由于 64 位指针算法。就我个人而言,我总是只使用 64 位模式而忘记 32 位模式。 32 位支持已经不可用for some OS's。是的,64 位代码可以编译成更大的尺寸。
  • 谢谢 - 正是我所希望的答案。
猜你喜欢
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2012-02-11
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多