From: Konstantin Kleisouris (kkonst_at_cs_dot_rutgers_dot_edu)
Date: Tue Jun 13 2006 - 10:43:08 PDT
Hi,
I am interested in defining a table dynamically in UPC.
This table should have affinity to Thread 0. I would like
to define an array like data1 below.
shared [] int data1[10][2];
The way I did it is as follows:
shared [] int * shared [] * shared data2;
if (MYTHREAD == 0) {
data2 = (shared [] int * shared [] *) upc_alloc(10 *
sizeof(int *));
for(i = 0; i < 10; i++) {
data2[i] = (shared [] int *) upc_alloc(2 * sizeof(int));
}
}
Howevever when I use data1 in a gather it works fine
upc_all_gather(data1, data, sizeof(int)*4,
UPC_IN_ALLSYNC|UPC_OUT_ALLSYNC);
Imagine that data in the gather above is defined as
shared [2] int data[10][2];
But when I use data2 in the same gather as bellow
upc_all_gather(data2, data, sizeof(int)*4,
UPC_IN_ALLSYNC|UPC_OUT_ALLSYNC);
I get the following message:
UPC Runtime error: Attempt to use a bogus
upcr_pshared_ptr_t: addrfield out of range
<pshared_ptr: addr=0xe2fed004 (offset=0x4), thread=0,
phase=0>
at /UPC_DEBUG//include/upcr_sptr.h:1245
Any idea?
Kosta