Fre*_*Foo 7 c c++ parallel-processing signed openmp
我刚从在线教程和资源中学习OpenMP.我想使用parallel for循环对矩阵(与其自身相乘)进行平方.在IBM编译器文档中,我发现要求"迭代变量必须是signed整数".在GCC实施中也是如此吗?是否在OpenMP标准中指定?如果是这样,这个要求是否有原因?
(这并不重要,因为预期的尺寸远小于INT_MAX,但它确实花了我一些演员阵容.)
Jac*_*cob 10
根据OpenMP 2.0 C/C++ API规范(pdf),第2.4.1节,这是for循环的限制之一.没有理由给它,但我怀疑它只是为了简化代码和编译器必须做出的假设,因为有特殊的代码来确保范围不会超出类型的最大值.
OpenMP 3.0显然也允许使用无符号类型,但我还没有看到它的实际应用.
简而言之,它是标准的一部分,下一个版本将允许无符号整数.
根据OpenMP 3.0规范:http://www.openmp.org/mp-documents/spec30.pdf,对于变量可以是有符号或无符号整数类型,请参见2.5.1循环构造.问题是给定的OpenMP实现是否符合最新规范.