OpenMP依赖列表中的指针和数组

OpenMP依赖列表中的指针和数组,openmp,Openmp,我得到了类似于头的东西。h: struct mystruct { double * a; double * t_a; } typedef struct mystruct pm_t; 我的OpenMP任务codemycode.c int foo(pm_t* t_lb){ #pragma omp task default(none) shared(t_lb, BLOCK) private(i) \ firstprivate

我得到了类似于头的东西。h:

struct mystruct {  
  double * a;                 
  double * t_a;          
}
typedef struct mystruct pm_t;
我的
OpenMP任务
code
mycode.c

int foo(pm_t* t_lb){

#pragma omp task default(none) shared(t_lb, BLOCK) private(i)   \
  firstprivate(baseIndex) depend (in: t_lb->a, t_lb->t_a)
    {
               ...  
使用英特尔17编译我得到:

error: invalid entity for this variable list in omp clause
    firstprivate(baseIndex) depend (in: t_lb->a,t_lb->t_a)
                                          ^
我知道OpenMP不处理depend语法中的指针,但我也尝试过使用

firstprivate(baseIndex) depend (in: t_lb->a[:1], t_lb->t_a)

没有成功。有人看到这有什么问题吗?

显然,根据OpenMP规范,这应该是一个错误:

作为另一个变量的一部分的变量(如 结构),但不是数组元素或数组节不能 出现在依赖条款中。”(版本4.5,第171页,第18行)

但是,计划在5.0版中取消此限制,并且Cray编译器已经在内部完成了此操作。因此,这将在GCC和Intel中失败,但将与Cray编译器一起工作