| 17 | | /* nmembs and offsets, this only works for up to 8 threads */ |
|---|
| 18 | | static int nmembs [] = { 23, 37, 12 , 44, 14, 31, 4, 55}; |
|---|
| 19 | | static int offsets [] = { 2, 30, 81 , 25, 77, 121, 139, 47}; |
|---|
| | 18 | |
|---|
| | 19 | /* nmembs and offsets, this only works for up to 3 threads */ |
|---|
| | 20 | /* Please consider the overlapping for list operation */ |
|---|
| | 21 | |
|---|
| | 22 | /* XXX: we need to test whether elemsize is enable for list operation ! */ |
|---|
| | 23 | |
|---|
| | 24 | static int nmembs [] = { 23, 2, 37, 5, 41, 7}; |
|---|
| | 25 | static int offsets [] = { 2, 130, 30, 140, 77, 150}; |
|---|
| | 26 | |
|---|
| | 27 | |
|---|
| 45 | | filevec[0].offset = offsets[MYTHREAD]; |
|---|
| 46 | | filevec[0].len = 10; |
|---|
| 47 | | filevec[1].offset = offsets[MYTHREAD+1]; |
|---|
| 48 | | filevec[1].len = 10; |
|---|
| 49 | | filevec[2].offset = offsets[MYTHREAD+2]; |
|---|
| 50 | | filevec[2].len = nmembs[MYTHREAD] + nmembs[MYTHREAD+THREADS] - 20; |
|---|
| 51 | | |
|---|
| 52 | | for( j = 0; j< THREADS; j++ ) { |
|---|
| 53 | | if( MYTHREAD == j) { |
|---|
| 54 | | fprintf(stderr, "TH%d : ", j); |
|---|
| 55 | | for(i = 0; i < 2; i++ ) |
|---|
| 56 | | fprintf( stderr, "memvec: len = %d, fv: offset = %d\n", memvec[i].len, filevec[i].offset ); |
|---|
| 57 | | fprintf(stderr, "\n"); |
|---|
| 58 | | } |
|---|
| 59 | | upc_barrier; |
|---|
| 60 | | } |
|---|
| | 54 | filevec[0].offset = offsets[MYTHREAD] * sizeof(TYPE); |
|---|
| | 55 | filevec[0].len = 10 * sizeof(TYPE); |
|---|
| | 56 | filevec[1].offset = offsets[MYTHREAD+1] * sizeof(TYPE); |
|---|
| | 57 | filevec[1].len = 10 * sizeof(TYPE); |
|---|
| | 58 | filevec[2].offset = offsets[MYTHREAD+2] * sizeof(TYPE); |
|---|
| | 59 | filevec[2].len = (memvec[0].len + memvec[1].len - 20) * sizeof(TYPE); |
|---|
| 91 | | fprintf(stderr, "TH%d : ", j); |
|---|
| 92 | | for(i = 0; i < nmembs[THREADS+MYTHREAD]; i++ ){ |
|---|
| 93 | | #if TYPE == char |
|---|
| 94 | | fprintf( stderr, "%u ", (unsigned char) buffer[ i+offsets[THREADS+MYTHREAD] ] ); |
|---|
| 95 | | #else |
|---|
| 96 | | fprintf( stderr, "%u ", buffer[ i+offsets[THREADS+MYTHREAD] ] ); |
|---|
| 97 | | #endif |
|---|
| 98 | | } |
|---|
| 99 | | fprintf(stderr, "\n"); |
|---|
| | 77 | /* copy the chunks to vbf */ |
|---|
| | 78 | vbfp = vbf; |
|---|
| | 79 | gupc_memget(vbfp, memvec[0].baseaddr, blocksize, sizeof(TYPE), memvec[0].len); |
|---|
| | 80 | vbfp += memvec[0].len; |
|---|
| | 81 | gupc_memget(vbfp, memvec[1].baseaddr, blocksize, sizeof(TYPE), memvec[1].len); |
|---|
| | 82 | |
|---|
| | 83 | /* verify the data using the filevec information */ |
|---|
| | 84 | vbfp = vbf; |
|---|
| | 85 | for (i = 0; i < 3; i++) { |
|---|
| | 86 | for (j = 0; j < filevec[i].len/sizeof(TYPE); j++) { |
|---|
| | 87 | if (*vbfp != (filevec[i].offset / sizeof(TYPE) + j) % 0x80) |
|---|
| | 88 | GULA_FAIL("Data integrity is violated!"); |
|---|
| | 89 | vbfp ++; |
|---|
| | 90 | } |
|---|