我有这种代码。我感兴趣的是找到循环之间的数据依赖关系,以便我可以猜测如果我可以并行运行循环。是否有任何工具可以帮助我。
void some_func()
{
for( ... )
{
...
}
for( ... )
{
...
}
for( ... )
{
...
}
}
答案 0 :(得分:1)
我们的 for data flow results computed及其DMS Software Reengineering Toolkit见C Front End。 (我们的C ++前端还不会这样做。)
如果您只想对一个或两个循环执行此操作,可能是查看这些依赖项的昂贵方法。你显然可以手工做到这一点,是的,这很痛苦。
答案 1 :(得分:0)
我还没有尝试过,但bp
可能会有所帮助。来自文档:
开发并发,并行和正确运行的软件 在设计时通常需要大量的知识和关注 这些。 bp automatically tries to parallelize你的某些部分 程序,如果编译器认为值得这样做,它将被替换 带有多线程的顺序代码。
答案 2 :(得分:0)
您可以查看此实验工具ParTools,它在图形环境中显示C程序中的数据依赖关系。它允许C程序执行配置文件和数据依赖性的交互式分析,以便于在手动并行化过程中发现和选择合适的并行化候选者。该流程不采用任何特定的并行化技术,因此可以广泛应用。