Index: /soft/giet_vm/transpose/main.c
===================================================================
--- /soft/giet_vm/transpose/main.c	(revision 335)
+++ /soft/giet_vm/transpose/main.c	(revision 336)
@@ -19,5 +19,4 @@
 #include "hard_config.h"
 #include "stdio.h"
-#include "malloc.h"
 #include "barrier.h"
 
@@ -26,5 +25,5 @@
 #define FILE_PATHNAME       "misc/images.raw"   // file pathname on disk
 
-#define INSTRUMENTATION_OK  0                   // display statistcs on TTY when non zero
+#define INSTRUMENTATION_OK  0                   // display statistics on TTY when non zero
 
 ///////////////////////////////////////////////////////
@@ -57,4 +56,5 @@
 giet_barrier_t barrier_3;
 giet_barrier_t barrier_4;
+giet_barrier_t barrier_5;
 
 volatile unsigned int init_ok = 1;
@@ -64,22 +64,22 @@
 {
 
-    int          file;                                             // file descriptor for images
+    int          file;                                             // file descriptor
     unsigned int l;                                                // line index for loops
     unsigned int p;                                                // pixel index for loops
 
-    unsigned int proc_id     = giet_procid();                      // processor id
-    unsigned int lpid        = proc_id % NB_PROCS_MAX;             // local processor id
-    unsigned int cluster_xy  = proc_id / NB_PROCS_MAX;             // cluster index (8 bits format)
-    unsigned int x           = cluster_xy >> Y_WIDTH;              // x coordinate
-    unsigned int y           = cluster_xy & ((1<<Y_WIDTH)-1);      // y coordinate
-
-    unsigned int npixels     = NN * NN;                            // number of pixel per image
-    unsigned int nblocks     = npixels / 512;                      // number of blocks per image
-    unsigned int image       = 0;                                  // image counter
-
-    unsigned int nclusters   = X_SIZE * Y_SIZE;                    // number of clusters with procs
-    unsigned int cluster_id  = (x * Y_SIZE) + y;                   // "continuous" cluster index   
-    unsigned int ntasks      = nclusters * NB_PROCS_MAX;           // number of tasks
-    unsigned int task_id     = (cluster_id * NB_PROCS_MAX) +lpid;  // "continuous" task index
+    unsigned int proc_id    = giet_procid();                       // global processor id
+    unsigned int lpid       = proc_id % NB_PROCS_MAX;              // local processor id
+    unsigned int cluster_xy = proc_id / NB_PROCS_MAX;              // cluster index (8 bits format)
+    unsigned int x          = cluster_xy >> Y_WIDTH;               // x coordinate
+    unsigned int y          = cluster_xy & ((1<<Y_WIDTH)-1);       // y coordinate
+
+    unsigned int npixels    = NN * NN;                             // pixels per image
+    unsigned int nblocks    = npixels / 512;                       // blocks per image
+    unsigned int image      = 0;                                   // image counter
+
+    unsigned int nclusters  = X_SIZE * Y_SIZE;                     // clusters with procs
+    unsigned int cluster_id = (x * Y_SIZE) + y;                    // "continuous" cluster index   
+    unsigned int ntasks     = nclusters * NB_PROCS_MAX;            // number of tasks
+    unsigned int task_id    = (cluster_id * NB_PROCS_MAX) + lpid;  // "continuous" task index
 
     // processor [0,0,0] makes parameters checking and barriers initialization
@@ -100,15 +100,18 @@
         }
 
-        if ( ntasks > 1 )
-        {
-            barrier_init( &barrier_0, ntasks );
-            barrier_init( &barrier_1, ntasks );
-            barrier_init( &barrier_2, ntasks );
-            barrier_init( &barrier_3, ntasks );
-            barrier_init( &barrier_4, ntasks );
-        }
+        barrier_init( &barrier_0, ntasks );
+        barrier_init( &barrier_1, ntasks );
+        barrier_init( &barrier_2, ntasks );
+        barrier_init( &barrier_3, ntasks );
+        barrier_init( &barrier_4, ntasks );
+        barrier_init( &barrier_5, ntasks );
 
         giet_shr_printf("\n[TRANSPOSE] Proc [%d,%d,%d] completes barrier init at cycle %d\n",
-                        0, 0, 0, giet_proctime() );
+                        x, y, lpid, giet_proctime() );
+
+        giet_shr_printf(" - x_size    = %d\n", X_SIZE );
+        giet_shr_printf(" - y_size    = %d\n", Y_SIZE );
+        giet_shr_printf(" - y_size    = %d\n", Y_SIZE );
+        giet_shr_printf(" - nprocs    = %d\n", NB_PROCS_MAX );
         giet_shr_printf(" - nclusters = %d\n", nclusters );
         giet_shr_printf(" - ntasks    = %d\n", ntasks );
@@ -160,6 +163,6 @@
     }
 
-    /////////////////////////////////////////////
-    if ( ntasks > 1 ) barrier_wait( &barrier_0 );
+    ///////////////////////////
+    barrier_wait( &barrier_0 );
 
     // Main loop (on images)
@@ -185,6 +188,6 @@
         LOAD_END[cluster_id][lpid] = giet_proctime();
 
-        /////////////////////////////////////////////
-        if ( ntasks > 1 ) barrier_wait( &barrier_1 );
+        ///////////////////////////
+        barrier_wait( &barrier_1 );
 
         // parallel transpose from buf_in to buf_out
@@ -240,6 +243,6 @@
         TRSP_END[cluster_id][lpid] = giet_proctime();
 
-        /////////////////////////////////////////////
-        if ( ntasks > 1 ) barrier_wait( &barrier_2 );
+        ///////////////////////////
+        barrier_wait( &barrier_2 );
 
         // optional parallel display from local buf_out to frame buffer
@@ -265,6 +268,6 @@
             DISP_END[cluster_id][lpid] = giet_proctime();
 
-            /////////////////////////////////////////////
-            if ( ntasks > 1 ) barrier_wait( &barrier_3 );
+            ///////////////////////////
+            barrier_wait( &barrier_3 );
         }
 
@@ -298,14 +301,17 @@
             {
                 giet_shr_printf("\n[TRANSPOSE] proc [%d,%d,0] checksum OK"
-                                " for image %d\n",
-                                x, y, image );
+                                " for image %d at cycle %d\n",
+                                x, y, image, giet_proctime() );
             }
             else
             {
                 giet_shr_printf("\n[TRANSPOSE] proc [%d,%d,0] checksum KO"
-                                " for image %d\n",
-                                x, y, image );
-            }
-        }
+                                " for image %d at cycle %d\n",
+                                x, y, image, giet_proctime() );
+            }
+        }
+
+        ///////////////////////////
+        barrier_wait( &barrier_4 );
 
         // instrumentation done by processor [0,0,0]
@@ -374,7 +380,7 @@
 
         //////////////////////////////////////////////////
-        // all tasks wait instrumentation completion 
+        // all tasks must wait instrumentation completion 
         //////////////////////////////////////////////////
-        if ( ntasks > 1 ) barrier_wait( &barrier_4 );
+        barrier_wait( &barrier_5 );
 
     } // end while image      
Index: /soft/giet_vm/transpose/transpose.py
===================================================================
--- /soft/giet_vm/transpose/transpose.py	(revision 335)
+++ /soft/giet_vm/transpose/transpose.py	(revision 336)
@@ -4,5 +4,5 @@
 
 ######################################################################################
-#   file   : transpose.py
+#   file   : transpose.py  (for the transpose application)
 #   date   : may 2014
 #   author : Alain Greiner
