(1)前端用clang,因为clang对C language family的扩展有良好的支持(需调研)。
(2)源程序通过前端翻译出来的LLVM IR再最转换成PTX中间语言(重点,应该需要大量工作)。
(3)得到的PTX再交给CUDA runtime或者AMD runtime执行。
问题:如果采用这种技术路线的话那么与源到源翻译的初衷有点相违背(源到源的输出目标是目标高层语言OpenCL或者CUDA),如果要实现源到源则需要将LLVM IR反编译到高级语言[1],感觉难度非常大。
参考文献:
[1] Moll S. Decompilation of LLVM IR[D]. B. Sc. Thesis, Saarland University, 2011.