回答
您可能想看看PTX。 NVIDIA提供了一个文档在CUDA 4.0文档中描述它。
http://developer.nvidia.com/nvidia-gpu-computing-documentation
NVIDIA描述PTX为“钽低电平并行线程执行的虚拟机和指令集架构(ISA)。PTX暴露GPU作为数据并行计算设备”。不完全像x86汇编,但你可能会发现它有趣的阅读。
值得指出的是,PTX是一个虚拟指令集。每个不同的NVIDIA架构都有自己的PTX物理ISA。可以将PTX指令内联到CUDA代码中,类似于内联x86 asm。 –
是的,GPU上的程序集与CPU完全不同。 其中一个差异在于GPU的指令集没有标准化。 NVidia(以及AMD和其他GPU供应商)可以并且确实将其指令集从一种GPU模型更改为下一种。
所以CUDA不公开汇编语言。没有意义。 (由于GPU硬件的限制,CUDA的C语言及其支持的任何其他语言都存在局限性,这不仅仅是因为Nvidia恨你并想惹恼你,所以即使你可以直接访问底层指令集和汇编语言,你将无法神奇地做你现在无法做到的事情。
(注意,NVidia确实定义了一个“虚拟”指令集,你可以在代码中使用和嵌入它,但它是不是指令集,它不直接映射到硬件指令,它只是一个简单的编程语言,它看起来像一个汇编语言
实际上有两种不同的CUDA汇编语言。
PTX是一种独立于机器的汇编语言,汇编到SASS,这是在特定GPU系列上执行的实际操作码。如果你建立.cubins,你正在处理SASS。大多数CUDA运行时应用程序使用PTX,因为这使它们能够在原始应用程序之后发布的GPU上运行。如果你的目标是sm_20(费米/ GTX 400系列),函数指针在CUDA中已经有一段时间了。
- 1. 汇编语言
- 2. MIPS汇编语言
- 3. 8086汇编语言
- 4. x86汇编语言
- 5. 汇编语言环
- 6. 汇编语言 - LDI
- 7. CMP汇编语言
- 8. 汇编语言:cbw
- 9. MIPS汇编语言
- 10. 是否有使用汇编语言规则登记
- 11. 是否有任何8051汇编语言C代码转换器
- 12. 是否有OS X的汇编语言调试器?
- 13. 将汇编语言宏转换为纯汇编语言
- 14. 检查字符串是否是回文 - 汇编语言
- 15. linux“as”汇编程序是否支持intel格式汇编语言?
- 16. 这是什么汇编语言?
- 17. 汇编语言diff工具
- 18. 了解汇编语言
- 19. 汇编语言:+ vs add
- 20. 汇编语言注册
- 21. 汇编语言介绍
- 22. 以汇编语言开头
- 23. 汇编语言x86 Irvine32
- 24. 理解ATT汇编语言
- 25. Doxygen和汇编语言
- 26. 汇编语言到C
- 27. MIPS汇编语言(Power2)
- 28. 汇编语言NASM错误
- 29. 与汇编语言拼搏
- 30. C至MIPS汇编语言
C for CUDA出了什么问题? http://developer.download.nvidia.com/compute/cuda/2_1/toolkit/docs/NVIDIA_CUDA_Programming_Guide_2.1.pdf – 2011-09-08 19:05:51
几周前回复[在“是否可以将指令放入CUDA代码中?” ](http://stackoverflow.com/questions/3677220/is-it-possible-to-put-instructions-into-cuda-code/7072079#7072079)。 *注意:*不是接受的答案,而是后来的答案。 – dmckee
@dmckee +1。另外,由于CUDA 3.2(和2.0设备)函数指针在不干扰ptx的情况下得到支持。而较旧的设备根本没有设备函数这样的东西 - 所有对来自内核的'__device__'函数的调用都被内联了。 – aland