发布于 2018-04-02 21:46:36
通常,您可以将编译器分为两个部分:特定语言(或语言系列)的前端和后端,后者与语言无关,可以为一个或多个特定的体系结构生成机器代码(您可以进一步分解它,但现在已经足够了)。可以在这两个部分进行优化;其中一些在任何地方都更合适。这就是clang和LLVM之间的关系,例如: clang是C族语言的前端,LLVM是后端。
由于不同的GPU有明显不同的机器代码(通常比arm64和x86_64差得多),所以后端编译器需要在GPU驱动程序中。但是没有理由让前端也出现在那里,尽管在OpenGL中是这样工作的。通过将两者分开,并使用SPIR-V作为它们用于通信的语言,我们得到:
https://stackoverflow.com/questions/49619038
复制相似问题