From: Andrew A. Johnson (ajohn_at_ahpcrc_dot_org)
Date: Wed Feb 02 2005 - 14:48:54 PST
I have a quick UPC question involving shared arrays and dynamic memory allocation. In the examples, to create a sharred array of size "N", I can do: shared [N/THREADS] int array[N]; For example, if N is 9 and THREADS is 3 (i.e. 3 processors), this would give me a 1D array with the layout array[0] -> affinity to 0 array[1] -> affinity to 0 array[2] -> affinity to 0 array[3] -> affinity to 1 array[4] -> affinity to 1 array[5] -> affinity to 1 array[6] -> affinity to 2 array[7] -> affinity to 2 array[8] -> affinity to 2 so it is basically a 1D array, split evenly into chunks of THREADS processors. Ok, in most application codes (and the big new code I'm contemplating use with UPC), N is never known at compile time, and is a user-input variable for the size of the data set (i.e. the total length of this 1D array I want). My question is, How do I get this same data layout when "N" is a variable only known at run time? I've been trying to use pointers and the upc dynamic memory allocation functions, but having trouble getting it to lay-out the data this way. I'm using the UPC compiler on the Cray X1, if that helps... Thanks, Andrew -- Andrew A. Johnson, Ph.D. Army HPC Research Center / NetworkCS, Inc. 612.337.3415 ajohn_at_ahpcrc_dot_org