使用Rose编译器的Cuda Source to Source翻译

时间:2012-01-18 23:49:24

标签: compilation cuda rose-compiler-framework

我想知道rose编译器对cuda的支持程度。我正在尝试为cuda构建源代码翻译器。是否可以使用Rose编译器?我应该使用哪种Rose编译器分发?

我知道这已经在前面讨论过了(在rose编译器中支持cuda),但我无法理解cuda支持是否存在。 Rose用户手册也没有太多信息。

1 个答案:

答案 0 :(得分:1)

Rose有一个C ++前端和一个看起来相当完美的Fortran前端。 Rose系统设计IMHO不容易与其他前端解析器轻松集成(例如你可能需要解析Cuda),尽管你可以做到这一点。 (Rose最初只有C ++,Fortran被嫁接)。 如果你没有在Rose手册中看到Cuda的明确提及,那很可能是因为它根本就不存在。

如果你想使用源到源转换来处理Cuda,你需要一个Cuda解析器和一套适当的转换机制,就像Rose所拥有的那样。

我无法为您提供Cuda解析器,但我的公司确实以DMS Software Reengineering Toolkit的形式提供了工业强度的源到源程序转换系统。

DMS已经被用于在大型C ++系统上进行大规模转换,所以我认为它至少与Rose一样能够胜任这一目的是非常合理的。 DMS也被用于处理极大的C和Fortran系统,以及Java,C#,ECMAScript,PHP和许多其他语言的其他代码,因此我认为将不同的前端集成到DMS中要相当容易。

据我了解,Cuda是C99衍生物。 DMS有一个C前端,明确支持构建各种C方言。大多数C99已经使用方言机制构建。这可能是一个很好的起点。

您可以尝试其他工具,例如ANTLR作为替代方案,但我认为很快就会发现ANTLR,Rose和DMS在解析,分析和转换复杂系统方面的能力差异很大。代码。