C++属性可以用来替换OpenMP杂注吗

Can C++ attributes be used to replace OpenMP pragmas?

本文关键字:OpenMP 替换 属性 C++      更新时间:2023-10-16

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)。