显卡有自己的指令集吗?我认为他们会这样做,但我一直想知道它们是否是专有的,或者是否有某种开放标准。
每个 GPU 指令之前是否都有一条 CPU 指令,还是无缝的?
也就是说,OpenGL 或 DirectX 是通过 CPU 调用驱动程序层,然后将 GPU 指令发送到总线上还是更复杂?
显卡有自己的指令集吗?我认为他们会这样做,但我一直想知道它们是否是专有的,或者是否有某种开放标准。
每个 GPU 指令之前是否都有一条 CPU 指令,还是无缝的?
也就是说,OpenGL 或 DirectX 是通过 CPU 调用驱动程序层,然后将 GPU 指令发送到总线上还是更复杂?
是的,他们这样做。AMD 目前甚至提供了高达 HD4000 系列的规格。
在此处查看AMD 的 R700 指令集参考指南。
还有一个名为Nouveau的开源项目,它对 Nvidia 指令集进行逆向工程。
请注意,Nvidia 的架构与 AMD 略有不同,因为它们不使用VLIW,而是使用标量执行(尽管多个线程另外分组在所谓的 Warp 或 Wavefront 中)。
此外,并非每个 OpenGL/Direct3D 调用都映射到“GPU 指令”。例如,当绑定纹理时,驱动程序只会设置适当的硬件寄存器,告诉 GPU 使用哪个纹理内存进行采样。
真正的程序只有在 GPU 上执行着色器或流处理内核时才会运行。
是的,GPU 有自己的专有指令集。GPU 指令独立于 CPU 指令执行。
对于 nvidia 卡,您可能需要查看此文档http://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-ref
AMD 图形核心下一代 (GCN)
https://en.wikipedia.org/wiki/Graphics_Core_Next
第一代被称为“南岛”。
wiki 页面链接到记录 ISA 的 AMD 规范,例如:http: //developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf
甚至还有一个名为 MIAOW https://github.com/VerticalResearchGroup/miaow的开放式 RTL 实现,尽管它可能侵犯了 AMD 暂时选择容忍的一些 IP(来源)。
SPIR-V
https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation是 Krhonos 标准中间语言。
它的设计可能与现有的 GPU ISA 相似,因此它的可实施性和采用率更高,因此它应该能够很好地了解实际的 GPU ISA。
如果这个标准真的流行起来,因为它似乎是由于 Vulkan 和 OpenCL 2.1 的采用,未来的实现很可能被设计为紧密地实现以具有更好的性能。
如何获取和修改 PTX
有关的
https://computergraphics.stackexchange.com/questions/7809/what-does-gpu-assembly-look-like
请参阅:CUDA 编程指南 3.0 版
设备的计算能力由主要修订号和次要修订号定义。
具有相同主版本号的设备具有相同的核心架构。基于 Fermi 架构的设备的主版本号是 2。之前的设备都是计算能力 1.x(它们的主版本号是 1)。
次要修订号对应于对核心架构的增量改进,可能包括新功能。
附录 A 列出了所有支持 CUDA 的设备及其计算能力。附录 G 给出了每种计算能力的技术规格。