Changeset 383 for soft/giet_vm/transpose/main.c
- Timestamp:
- Aug 7, 2014, 12:27:17 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
soft/giet_vm/transpose/main.c
r355 r383 20 20 #include "stdio.h" 21 21 #include "barrier.h" 22 #include "malloc.h" 22 23 23 24 #define NN 128 // image size : nlines = npixels = 128 24 25 #define NB_IMAGES 5 // number of images to be handled 25 26 #define FILE_PATHNAME "misc/images.raw" // file pathname on disk 26 27 #define NB_CLUSTERS (X_SIZE * Y_SIZE) // number of clusters 27 28 #define INSTRUMENTATION_OK 1 // display statistics on TTY when non zero 28 29 … … 34 35 // for each processor (up to 4 processors) 35 36 // in each cluster (up to 32 clusters) 36 unsigned int LOAD_START[ 32][4];37 unsigned int LOAD_END [ 32][4];38 unsigned int TRSP_START[ 32][4];39 unsigned int TRSP_END [ 32][4];40 unsigned int DISP_START[ 32][4];41 unsigned int DISP_END [ 32][4];37 unsigned int LOAD_START[NB_CLUSTERS][NB_PROCS_MAX]; 38 unsigned int LOAD_END [NB_CLUSTERS][NB_PROCS_MAX]; 39 unsigned int TRSP_START[NB_CLUSTERS][NB_PROCS_MAX]; 40 unsigned int TRSP_END [NB_CLUSTERS][NB_PROCS_MAX]; 41 unsigned int DISP_START[NB_CLUSTERS][NB_PROCS_MAX]; 42 unsigned int DISP_END [NB_CLUSTERS][NB_PROCS_MAX]; 42 43 43 44 // arrays of pointers on distributed buffers 44 45 // one input buffer & one output buffer per cluster 45 unsigned char* buf_in [ 32];46 unsigned char* buf_out[ 32];46 unsigned char* buf_in [NB_CLUSTERS]; 47 unsigned char* buf_out[NB_CLUSTERS]; 47 48 48 49 // checksum variables … … 50 51 unsigned check_line_after[NN]; 51 52 52 // synchronisation barriers 53 giet_barrier_t barrier_0; 54 giet_barrier_t barrier_1; 55 giet_barrier_t barrier_2; 56 giet_barrier_t barrier_3; 57 giet_barrier_t barrier_4; 58 giet_barrier_t barrier_5; 53 // global synchronisation barrier 54 giet_barrier_t barrier; 59 55 60 56 volatile unsigned int init_ok = 1; … … 62 58 ////////////////////////////////////////// 63 59 __attribute__ ((constructor)) void main() 60 ////////////////////////////////////////// 64 61 { 65 62 … … 100 97 } 101 98 102 barrier_init( &barrier_0, ntasks ); 103 barrier_init( &barrier_1, ntasks ); 104 barrier_init( &barrier_2, ntasks ); 105 barrier_init( &barrier_3, ntasks ); 106 barrier_init( &barrier_4, ntasks ); 107 barrier_init( &barrier_5, ntasks ); 99 barrier_init( &barrier, ntasks ); 108 100 109 101 giet_shr_printf("\n[TRANSPOSE] Proc [%d,%d,%d] completes barrier init at cycle %d\n", … … 135 127 136 128 // allocate buffers in cluster[x,y] 137 buf_in[cluster_id] = ((unsigned char*)heap_base) + (cluster_xy << 20);138 buf_out[cluster_id] = buf_in[cluster_id] + NN*NN/nclusters;129 buf_in[cluster_id] = remote_malloc( npixels/NB_CLUSTERS, x, y); 130 buf_out[cluster_id] = remote_malloc( npixels/NB_CLUSTERS, x, y); 139 131 140 132 giet_shr_printf("\n[TRANSPOSE] Proc [%d,%d,%d] completes buffer allocation at cycle %d\n" … … 163 155 } 164 156 165 ///////////////////////// //166 barrier_wait( &barrier _0);157 ///////////////////////// 158 barrier_wait( &barrier ); 167 159 168 160 // Main loop (on images) … … 188 180 LOAD_END[cluster_id][lpid] = giet_proctime(); 189 181 190 ///////////////////////// //191 barrier_wait( &barrier _1);182 ///////////////////////// 183 barrier_wait( &barrier ); 192 184 193 185 // parallel transpose from buf_in to buf_out … … 243 235 TRSP_END[cluster_id][lpid] = giet_proctime(); 244 236 245 ///////////////////////// //246 barrier_wait( &barrier _2);237 ///////////////////////// 238 barrier_wait( &barrier ); 247 239 248 240 // optional parallel display from local buf_out to frame buffer … … 268 260 DISP_END[cluster_id][lpid] = giet_proctime(); 269 261 270 ///////////////////////// //271 barrier_wait( &barrier _3);262 ///////////////////////// 263 barrier_wait( &barrier ); 272 264 } 273 265 … … 312 304 } 313 305 314 ///////////////////////// //315 barrier_wait( &barrier _4);306 ///////////////////////// 307 barrier_wait( &barrier ); 316 308 317 309 // instrumentation done by processor [0,0,0] … … 382 374 // all tasks must wait instrumentation completion 383 375 ////////////////////////////////////////////////// 384 barrier_wait( &barrier _5);376 barrier_wait( &barrier ); 385 377 386 378 } // end while image
Note: See TracChangeset
for help on using the changeset viewer.