Ignore:
Timestamp:
Aug 7, 2014, 12:27:17 PM (10 years ago)
Author:
alain
Message:

Update the transpose application to use the new malloc.h and barrier.h libraries.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/transpose/main.c

    r355 r383  
    2020#include "stdio.h"
    2121#include "barrier.h"
     22#include "malloc.h"
    2223
    2324#define NN                  128                 // image size : nlines = npixels = 128
    2425#define NB_IMAGES           5                   // number of images to be handled
    2526#define FILE_PATHNAME       "misc/images.raw"   // file pathname on disk
    26 
     27#define NB_CLUSTERS         (X_SIZE * Y_SIZE)   // number of clusters
    2728#define INSTRUMENTATION_OK  1                   // display statistics on TTY when non zero
    2829
     
    3435// for each processor (up to 4 processors)
    3536// 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];
     37unsigned int LOAD_START[NB_CLUSTERS][NB_PROCS_MAX];
     38unsigned int LOAD_END  [NB_CLUSTERS][NB_PROCS_MAX];
     39unsigned int TRSP_START[NB_CLUSTERS][NB_PROCS_MAX];
     40unsigned int TRSP_END  [NB_CLUSTERS][NB_PROCS_MAX];
     41unsigned int DISP_START[NB_CLUSTERS][NB_PROCS_MAX];
     42unsigned int DISP_END  [NB_CLUSTERS][NB_PROCS_MAX];
    4243
    4344// arrays of pointers on distributed buffers
    4445// one input buffer & one output buffer per cluster
    45 unsigned char*  buf_in [32];
    46 unsigned char*  buf_out[32];
     46unsigned char*  buf_in [NB_CLUSTERS];
     47unsigned char*  buf_out[NB_CLUSTERS];
    4748
    4849// checksum variables
     
    5051unsigned check_line_after[NN];
    5152
    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
     54giet_barrier_t barrier;
    5955
    6056volatile unsigned int init_ok = 1;
     
    6258//////////////////////////////////////////
    6359__attribute__ ((constructor)) void main()
     60//////////////////////////////////////////
    6461{
    6562
     
    10097        }
    10198
    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 );
    108100
    109101        giet_shr_printf("\n[TRANSPOSE] Proc [%d,%d,%d] completes barrier init at cycle %d\n",
     
    135127 
    136128        // 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);
    139131
    140132        giet_shr_printf("\n[TRANSPOSE] Proc [%d,%d,%d] completes buffer allocation at cycle %d\n"
     
    163155    }
    164156
    165     ///////////////////////////
    166     barrier_wait( &barrier_0 );
     157    /////////////////////////
     158    barrier_wait( &barrier );
    167159
    168160    // Main loop (on images)
     
    188180        LOAD_END[cluster_id][lpid] = giet_proctime();
    189181
    190         ///////////////////////////
    191         barrier_wait( &barrier_1 );
     182        /////////////////////////
     183        barrier_wait( &barrier );
    192184
    193185        // parallel transpose from buf_in to buf_out
     
    243235        TRSP_END[cluster_id][lpid] = giet_proctime();
    244236
    245         ///////////////////////////
    246         barrier_wait( &barrier_2 );
     237        /////////////////////////
     238        barrier_wait( &barrier );
    247239
    248240        // optional parallel display from local buf_out to frame buffer
     
    268260            DISP_END[cluster_id][lpid] = giet_proctime();
    269261
    270             ///////////////////////////
    271             barrier_wait( &barrier_3 );
     262            /////////////////////////
     263            barrier_wait( &barrier );
    272264        }
    273265
     
    312304        }
    313305
    314         ///////////////////////////
    315         barrier_wait( &barrier_4 );
     306        /////////////////////////
     307        barrier_wait( &barrier );
    316308
    317309        // instrumentation done by processor [0,0,0]
     
    382374        // all tasks must wait instrumentation completion
    383375        //////////////////////////////////////////////////
    384         barrier_wait( &barrier_5 );
     376        barrier_wait( &barrier );
    385377
    386378    } // end while image     
Note: See TracChangeset for help on using the changeset viewer.