OpenMP依赖列表中的指针和数组
我得到了类似于头的东西。h: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
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(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编译器一起工作