2013-07-27 49 views
0

我在OS X上使用OpenCL,我想知道是否有人能告訴我用於從OpenCL內核源代碼生成GPU二進制文件的編譯器?在OS X中,OpenCL內核首先編譯爲LLVM,然後進行優化,然後最終編譯爲GPU本機代碼?我還想知道OpenCL內核編譯器是否對內核進行了優化,例如循環不變代碼運動?OpenCL內核編譯器優化

回答

2

是的,在Mac OS X上,所有OpenCL代碼都編譯爲LLVM IR,然後傳遞給設備特定的優化和代碼生成。

您可以離線生成LLVM位碼文件,並使用clCreateProgramWithBinary中的結果。編譯器位於OpenCL框架內(/System/Library/Framework/OpenCL.framework/Libraries/openclc)。你需要這些選項(arch可以是i386,x86_64,gpu_32):

openclc -c -o foo.bc -arch gpu_32 -emit-llvm foo.cl