1

我有这种代码。我感兴趣的是找到循环之间的数据依赖关系,这样我就可以猜测是否可以并行运行循环。有什么工具可以帮助我解决这个问题。

void some_func()
{
 for( ... )
 {
  ...
 }
 for( ... )
 {
  ...
 }
 for( ... )
 {
  ...
 }
}
4

3 回答 3

1

请参阅我们的DMS 软件再工程工具包及其C 前端计算的数据流结果。(我们的 C++ 前端还不会这样做)。

如果您只想在一个或两个循环中执行此操作,那么查看这些依赖项可能是一种昂贵的方式。您显然可以手动执行此操作,是的,这很痛苦。

于 2012-05-26T13:23:37.623 回答
0

您可以查看这个实验工具ParTools,它在图形环境中显示 C 程序中的数据依赖关系。它允许对 C 程序执行配置文件和数据依赖性进行交互式分析,以促进在手动并行化过程中发现和选择合适的并行化候选者。该流程不采用任何特定的并行化技术,因此可以广泛应用。

于 2013-04-17T09:20:06.577 回答
0

我还没有尝试过,但bp可能会有所帮助。从文档中:

在设计这些软件时,开发并发、并行和正确运行的软件通常需要大量的知识和注意力。bp会自动尝试并行化程序的某些部分,如果编译器认为值得这样做,它将用多线程代码替换顺序代码。

于 2012-05-26T10:28:48.913 回答