我有这种代码。我感兴趣的是找到循环之间的数据依赖关系,这样我就可以猜测是否可以并行运行循环。有什么工具可以帮助我解决这个问题。
void some_func()
{
for( ... )
{
...
}
for( ... )
{
...
}
for( ... )
{
...
}
}
请参阅我们的DMS 软件再工程工具包及其C 前端计算的数据流结果。(我们的 C++ 前端还不会这样做)。
如果您只想在一个或两个循环中执行此操作,那么查看这些依赖项可能是一种昂贵的方式。您显然可以手动执行此操作,是的,这很痛苦。
您可以查看这个实验工具ParTools,它在图形环境中显示 C 程序中的数据依赖关系。它允许对 C 程序执行配置文件和数据依赖性进行交互式分析,以促进在手动并行化过程中发现和选择合适的并行化候选者。该流程不采用任何特定的并行化技术,因此可以广泛应用。