C++属性可以用来替换OpenMP杂注吗
Can C++ attributes be used to replace OpenMP pragmas?
C++属性提供了一种方便而标准化的方法,可以用额外的信息标记代码,以提供给编译器和/或其他工具。
使用OpenMP需要在源中添加大量#pragma omp...
行(例如标记一个循环以进行并行处理)。这些#pragma
行似乎是诸如广义属性之类的设施的优秀候选者。
例如,#pragma omp parallel for
可能变成[[omp::parallel(for)]]
。
经常不准确的cppreference.com在这里使用这样一个属性作为例子,这证实了它至少已经被(某人)考虑过了。
是否存在OpenMP杂注到C++属性的映射,目前任何/所有主要编译器都支持该映射?如果没有,是否有计划创建一个?
这绝对是一种可能性,甚至是OpenMP语言委员会正在研究的问题(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)。
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- OpenMP阵列性能较差
- 如何用转义符替换字符串中的所有特殊字符
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 在一个读写器队列中,我可以用volatile替换原子吗
- OpenMP:并行更新数组总是需要减少数组吗
- 用符号版本替换对函数的所有调用
- 如何使用OpenMP并行这两个循环
- 从python调用openMP共享库时,未定义opnMP函数
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用OpenMP使这个循环并行
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 替换基于地图的所有引用
- 查找最近配对时的OpenMP竞赛条件
- 按平均值替换数组中的元素
- 使用输入打破 OpenMP 中的循环
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- C++属性可以用来替换OpenMP杂注吗