我有這種類型的代碼。我感興趣的是找到循環之間的數據依賴關係,以便我可以猜測如果我可以並行運行循環。有沒有什麼工具可以幫助我。是否有任何工具可以顯示功能內的數據依賴關係
void some_func()
{
for(...)
{
...
}
for(...)
{
...
}
for(...)
{
...
}
}
我有這種類型的代碼。我感興趣的是找到循環之間的數據依賴關係,以便我可以猜測如果我可以並行運行循環。有沒有什麼工具可以幫助我。是否有任何工具可以顯示功能內的數據依賴關係
void some_func()
{
for(...)
{
...
}
for(...)
{
...
}
for(...)
{
...
}
}
見我們DMS Software Reengineering Toolkit及其C Front End for data flow results computed。 (我們的C++前端不會這樣做)。
如果您只想對一個或兩個循環執行此操作,可能是一種昂貴的方法來查看這些依賴關係。你顯然可以手動做到這一點,是的,這是痛苦的。
我還沒有試過這個,但bp
可能會有所幫助。從文檔:
開發並行,平行和正常運行的軟件 設計 這些時,通常需要大量的知識和關注。 bp automatically tries to parallelize 程序的某些部分,如果編譯器認爲它值得這樣做,它將用多線程代替 順序代碼。
您可以檢查此實驗工具ParTools,它在圖形環境中顯示C程序中的數據依賴關係。它允許交互式分析C程序執行配置文件和數據依賴性,以便於在手動並行化過程中發現和選擇合適的並行化候選項。流程並不採用任何特定的並行化技術,因此可以廣泛應用。