我目前正在撰写一份关于编译器级别自动并行化技术状态的报告。关于 OpenACC 标准,有多种编译器可用,例如 PGI 编译器、CAPS 或 CRAY 编译器。但是,我想知道 CAPS 编译器是否有特定的限制,而 OpenACC 标准中没有记录这些限制?我知道 2.0a 可能存在限制,因为该标准尚未完全实现,但有什么我应该注意的陷阱吗?
最佳答案
当人们依赖自动并行化时,OpenACC-2.0 最常见的问题是标量隐式地copy(在内核中)或firstprivate(在并行部分中) 。 这意味着,除非编译器能够私有(private)化这些标量,否则包含此类标量的循环的自动并行化(如果写入这些标量)可能会失败(即,不会“促进”循环并行执行)。 目前,CAPS 编译器并没有积极地将标量私有(private)化,因此自动并行化可能不会像您期望的那样工作。这能回答你的问题吗?
关于c - 支持 OpenACC 的 CAPS 编译器的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837469/