Pat*_*k87 32
你可能想看看PTX.NVIDIA在CUDA 4.0文档中提供了描述它的文档.
http://developer.nvidia.com/nvidia-gpu-computing-documentation
NVIDIA将PTX描述为"Ta低级并行线程执行虚拟机和指令集架构(ISA).PTX将GPU暴露为数据并行计算设备." 不完全像x86汇编,但你可能会发现它很有趣.
Chr*_*isV 17
实际上有两种不同的CUDA汇编语言.
PTX是一种与机器无关的汇编语言,可编译为SASS,即在特定GPU系列上执行的实际操作码.如果您构建.cubins,那么您正在处理SASS.大多数CUDA运行时应用程序都使用PTX,因为这使它们能够在原始应用程序之后发布的GPU上运行.
此外,如果您的目标是sm_20(Fermi/GTX 400系列),函数指针已经在CUDA中使用了一段时间.
jal*_*alf 14
是的,GPU上的程序集与CPU完全不同.其中一个不同之处在于GPU的指令集未标准化.NVidia(以及AMD和其他GPU供应商)可以并且确实将他们的指令集从一个GPU模型更改为下一个.
所以CUDA不公开汇编语言.没有意义.(而且CUDA的C语言中的限制,以及它们支持的其他语言,都是因为GPU硬件的限制,不仅仅是因为Nvidia讨厌你并想要惹恼你.所以即使你有直接访问底层指令集和汇编语言,你将无法神奇地做你现在不能做的事情.
(请注意,有NVIDIA并定义,你可以用在你的代码中嵌入一个"虚拟"的指令集,但它不是的指令集,它不直接映射到硬件指令,它比简单的编程语言,多一点"看起来像"集会的方言