c++ - C++ 属性可以用来代替 OpenMP pragma 吗?

标签 c++ openmp

C++ 属性提供了一种方便和标准化的方式来标记带有额外信息的代码,以提供给编译器和/或其他工具。

使用 OpenMP 涉及添加很多 #pragma omp...行进入源(例如标记一个循环以进行并行处理)。这些 #pragma线条似乎是通用属性等设施的绝佳候选者。

例如,#pragma omp parallel for可能会变成[[omp::parallel(for)]] .

经常不准确的cppreference.com 以这样的属性为例here ,这证实它至少已被(某人)考虑过。

是否有任何/所有主要编译器当前可用和支持的 OpenMP pragma 到 C++ 属性的映射?如果没有,是否有任何计划进行创建?

最佳答案

这绝对是一种可能性,甚至是 OpenMP 语言委员会正在考虑的事情。查看 OpenMP 技术报告 8 (https://www.openmp.org/wp-content/uploads/openmp-TR8.pdf) 第 36 页,其中提出了通过属性使用 OpenMP 的语法。包含在 TR8 中并不能保证它包含在 5.1 版中,但它表明它正在被讨论。此语法主要基于 C++ 属性的原始提案中所做的工作。

如果您对此有具体的反馈,我鼓励您通过 OpenMP 论坛 (http://forum.openmp.org/forum/viewforum.php?f=26) 提供反馈。

关于c++ - C++ 属性可以用来代替 OpenMP pragma 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016119/

相关文章:

c++ - 在位图上并发腐 eclipse 或膨胀

c++ - omp 并行 block 外的 omp pragma

c++ - OpenMP parallel-for 效率查询

c++ - 使用c++、linux绘制 vector 图

c++ - 自动调用原始指针的自定义转换器 A* <-> B*

C++传递指向静态函数的指针在执行期间更改值

c++ - 将 OpenMP 应用于 C++ 中的特定嵌套循环

macos - 为什么我应该通过 OpenMP 使用 Grand Central Dispatch?

c++ - 对 vtable 的 undefined reference ...

c++ - 拦截WinAPI调用并修改返回值