我目前正在编写关于编译器级别的自动并行化技术状态的报告。关于OpenACC标准,有几个编译器可用,例如PGI编译器,CAPS或CRAY编译器。但是,我想知道CAPS编译器是否有特定限制,OpenACC标准中没有记录这些限制?我知道,2.0a可能存在限制,因为这个标准还没有完全实现,但是我应该注意哪些陷阱?
答案 0 :(得分:1)
当人们依赖自动并行化时,OpenACC-2.0最常见的问题是标量是隐含的复制(在内核中)或 firstprivate (在并行部分中) 。 这意味着除非编译器能够对这些标量进行私有化,否则包含此类标量的循环的自动并行化(如果它们被写入)可能会失败(也就是说,不会“促进”循环到并行执行)。 目前,CAPS编译器没有积极地将标量版私有化,因此自动并行化可能无法像您期望的那样工作。这会回答你的问题吗?