3

我想知道玫瑰编译器对 cuda 的支持程度。我正在尝试为 cuda 构建源到源翻译器。是否可以使用 Rose 编译器?我应该使用哪个版本的 Rose 编译器?

我知道这已经在前面讨论过(玫瑰编译器中对 cuda 的支持),但我不明白是否有 cuda 支持。Rose用户手册也没有太多信息。

4

1 回答 1

1

Rose 有一个 C++ 前端和一个 Fortran 前端,它们看起来集成得相当好。Rose 系统设计恕我直言,不适合轻松集成其他前端解析器(例如您可能需要解析 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 在解析、分析和转换复杂的真实代码系统的能力方面处于非常不同的联盟。

于 2012-01-19T07:17:28.643 回答