为什么Apple在其OpenGL / OpenCL实现中使用了CLang

时间:2012-10-22 20:12:18

标签: llvm clang

我不知道它是否适合提出这个问题。但是为什么Apple选择使用llvm及其clang实现代码来编写OpenCL / OpenGL?它给他们带来了什么好处以及如何?请原谅我对这个话题的无知,我对此并不了解。

2 个答案:

答案 0 :(得分:2)

Straight from an LLVM/Apple Developer

More info, PDF Slides

LLVM在运行时以两种不同的方式使用:

  1. 固定功能顶点处理中的运行时代码特化 管道。基本上,OpenGL管道有很多参数(雾 启用?顶点有纹理信息吗?等)很少改变: 执行完全分支代码沼泽分支预测器和 表现不佳。要解决此问题,请将代码预编译为LLVM .bc 表单,从中制作,优化代码的特化, 和JIT在运行时需要编译。

  2. OpenGL顶点着色器是使用一族编写的小程序 编程具有高域特定功能的语言(例如点 产品,纹理查找等)。在运行时,OpenGL堆栈进行转换 将顶点程序转换为LLVM形式,运行LLVM优化器传递然后再运行JIT 编译代码。

  3. (上面链接中的更多细节)

答案 1 :(得分:0)

因为它们有助于Clang / LLVM的开发,并且因为使用LLVM / Clang编译的源代码比GCC产生更快的二进制代码...

  

Clang的开发人员声称它可以减少内存占用   与竞争编译器相比,编译速度提高了   GCC。为了支持他们的主张,他们提出,截至2007年10月,   Clang编译碳库的速度是GCC的两倍,   同时使用大约六分之一的GCC内存和磁盘空间。

http://en.wikipedia.org/wiki/Clang