关于OpenMP 5.2中declare simd linear(p:ref)规范与示例不一致的问询
OpenMP 5.2规范与官方示例中
linear(p: ref)子句的疑似不一致性 规范要求
根据OpenMP 5.2规范5.4.6节(linear子句)的描述:
若linear修饰符为ref,列表项必须是多态变量、假定形状数组或具有ALLOCATABLE属性的变量。
官方示例
OpenMP 5.2官方示例中的linear_modifier.1.f90包含如下Fortran代码:
module m integer, parameter :: NN = 1023 integer :: a(NN) contains subroutine add_one2(p) implicit none !$omp declare simd(add_one2) linear(p: ref) simdlen(8) integer :: p ! <--- p为简单整数标量 p = p + 1 end subroutine end module
疑问
上述示例中,linear(p: ref)的变量p是简单integer标量,显然不属于规范中规定的“多态变量”“假定形状数组”或“具有ALLOCATABLE属性的变量”范畴。这看起来与规范要求存在矛盾,究竟是对规范的理解有误,还是示例本身存在问题?
内容的提问来源于stack exchange,提问作者Moriyuki Saito
相关产品推荐
相关产品推荐

