1

许多 OpenACC 教程假定编译器/加速器将通过自动检查依赖关系并确保循环实际上是可并行化的来检查正确性。然而,OpenACC 规范似乎没有提及强制正确性分析的任何内容。OpenACC 编译器是否有义务检查循环是否实际上是可并行化的,如果不是则放弃?

4

1 回答 1

2

当使用“loop”指令的“auto”子句时,编译器需要分析循环以确定它们是否与数据无关。(参见 OpenACC 标准的第 2.9.6 节)。

对于“内核”结构中的循环,默认情况下启用“自动”,除非使用“独立”或“序列”子句。

对于“并行”结构中的“循环”指令,默认情况下不启用“自动”,因此假定装饰循环是独立的。

于 2016-04-18T21:11:25.797 回答