【问题标题】:openacc compiler supporting nested compute constructs支持嵌套计算结构的 openacc 编译器
【发布时间】:2017-11-18 04:02:42
【问题描述】:

我正在 openacc.org 上学习 OpenaAcc 编程指南。本书中广泛使用了许多嵌套计算区域。但是我的编译器(x86-64 Linux -tp sandybridge 2017 年版本 17.4-0 64 位目标)写道,我的编译器版本不支持嵌套计算结构。这个版本的编译器真的不支持嵌套计算结构吗?如果是这样,如果我需要嵌套计算构造支持,使用哪个编译器?最新版本的 gcc 是否支持此选项?

【问题讨论】:

    标签: openacc


    【解决方案1】:

    正确,PGI 还不支持嵌套并行(即其他计算区域内的计算区域)。我认为 GNU 也不支持它。

    您能否指出您所指的 OpenACC 编程指南的具体部分?我不记得有任何嵌套并行示例,我想知道您是否是指在两个编译器都支持的计算区域内添加“循环”指令。

    【讨论】:

    • OpenAcc 编程指南 (openacc.org/sites/default/files/inline-files/…)。例如,第 41、42、43-44、45 页包含嵌套并行的示例。请检查我,但在我看来我是对的。
    • 不,这些是在计算区域内使用“循环”指令的示例,这很好。嵌套并行是指在另一个计算区域内有计算区域,“并行”或“内核”。
    • 鉴于此评论以及您在此处和 PGI 用户论坛上的其他帖子,我认为您可能会对计算区域“并行”或“内核”与“循环”指令。计算区域定义要卸载到设备的代码,而“循环”指令在计算区域内定义循环以并行化以及在哪个并行级别使用“gang”、“worker”或“vector”。计算区域内但不在“循环”指令内的代码由每个 gang 冗余执行。
    • 误会见谅。据我了解,嵌套并行意味着一个“并行/内核”在另一个内部,“pragma acc loop”只是指定如何处理“for”循环的指令。
    猜你喜欢
    • 2019-06-10
    • 1970-01-01
    • 2013-09-22
    • 2021-09-29
    • 2020-08-19
    • 2016-09-29
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多