UPC中的结构可以作为一个字段共享数组吗?



我需要将共享数组存储在UPC中的结构中。可以做吗?

struct字段无法共享标记,其原因是不能用静态或外部声明它们 - 结构字段不带有独立的存储级信息(即,因为一个字段结构始终是连续存储的,可用于声明堆栈变量(。

但是,结构可能包含一个数组字段,然后可以使用结构定义共享对象,例如:

struct S {
  int array[100];
  int foo;
};
shared struct S data[THREADS];
...
data[MYTHREAD].array[0] = MYTHREAD;

但是,请注意,在此示例中,数据的分布是每个线程一个结构,数组字段不是在线程上独立分布。

一个结构也可能包含指针与共享数组,例如:

#include <upc.h>
struct R {
  shared int *sa;
  int bar;
};
...
struct R r;
r.sa = upc_all_alloc(THREADS, sizeof(int));
r.sa[MYTHREAD] = MYTHREAD;

在这种情况下使用数组语法访问(。

相关内容

  • 没有找到相关文章

最新更新