许多OpenACC教程假设编译器/加速器将通过自动检查依赖关系并确保循环实际可并行化来检查是否正确。但是,OpenACC规范似乎没有提及强制性正确性分析的任何内容。 OpenACC编译器是否有义务检查循环是否实际上是可并行化的,如果它们不是,则放弃?
答案 0 :(得分:2)
当"循环"时,编译器需要分析循环以确定它们是否是数据无关的。指令" auto"使用了子句。 (参见OpenACC标准第2.9.6节)。
对于"内核中的循环"构建," auto"默认情况下启用,除非"独立"或" seq"使用了条款。
对于"循环" " parallel"中的指令构建," auto"默认情况下不启用,因此装饰循环被假定为独立的。