The following example UPC program (upc-example.upc) is used to illustrate GDB-UPC features. It can also be downloaded in its native form (use right click "Save Link As .." feature).
#include#include #include #define BLKSIZE 25 #define BLKS_PER_THREAD 4 #define FACTOR (BLKSIZE*BLKS_PER_THREAD) #define NELEM (FACTOR*THREADS) int lcnt; int lthr_cnt[THREADS]; shared int cnt; shared int thr_cnt[THREADS]; shared int step_cnt[THREADS]; shared [BLKSIZE] int array[NELEM]; shared [BLKSIZE] int array2[NELEM]; int main () { int i, j; if (!MYTHREAD) { printf ("Start.\n"); } upc_barrier; step_cnt[MYTHREAD] = MYTHREAD; step_cnt[MYTHREAD]++; step_cnt[MYTHREAD]++; upc_barrier; for (i = 0; i < THREADS; i++) { if (i == MYTHREAD) { lthr_cnt[i] += MYTHREAD; thr_cnt[i] += MYTHREAD; } } upc_barrier; for (i = 0; i < BLKS_PER_THREAD; ++i) { int blk_index = (MYTHREAD + i * THREADS) * BLKSIZE; int *block = (int *)&array[blk_index]; for (j = 0; j < BLKSIZE; ++j) { block[j] = blk_index + j + 1; } } upc_barrier; if (MYTHREAD == 0) { for (i = 0; i < NELEM; ++i) { int got = array[i]; int expected = i+1; if (got != expected) { fprintf(stderr, "upc_example: error at element %d. Expected %d, got %d\n", i, expected, got); abort (); } } printf ("upc_example: simple blocked array test - passed.\n"); } upc_barrier; }








