diff --git a/testing/testing_zgetrf.c b/testing/testing_zgetrf.c
index 1db2d0030f335ea521bc12bf22ae37a830c920cc..5e489b7f7c1e1f8c66e3c9f7ba86f3308c3fb75e 100644
--- a/testing/testing_zgetrf.c
+++ b/testing/testing_zgetrf.c
@@ -17,7 +17,8 @@
  * @author Lionel Eyraud-Dubois
  * @author Xavier Lacoste
  * @author Florent Pruvost
- * @date 2025-01-29
+ * @author Matteo Marcos
+ * @date 2025-03-24
  * @precisions normal z -> c d s
  *
  */
@@ -106,47 +107,24 @@ testing_zgetrf_desc( run_arg_list_t *args, int check )
     testing_stop( &test_data, flops_zgetrf( M, N ) );
 
     /* Checks the factorization and residual */
-#if !defined(CHAMELEON_SIMULATION)
     if ( check ) {
-        CHAM_desc_t *descA0c;
         CHAM_desc_t *descA0 = CHAMELEON_Desc_Copy( descA, CHAMELEON_MAT_ALLOC_TILE );
 
-        /* Create A0c as local to rank 0 on all nodes to gather the matrix */
-        CHAMELEON_Desc_Create_User(
-            &descA0c, (void*)CHAMELEON_MAT_ALLOC_GLOBAL, ChamComplexDouble,
-            nb, nb, nb*nb, M, N, 0, 0, M, N, 1, 1,
-            chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL, NULL );
-
         if ( diag == ChamUnit ) {
-            CHAMELEON_zplgtr_Tile( 0,     ChamUpper, descA0c, seedA   );
-            CHAMELEON_zplgtr_Tile( minMN, ChamLower, descA0c, seedA+1 );
-        }
-        else {
-            CHAMELEON_zplrnt_Tile( descA0c, seedA );
-        }
-
-        /* Compute the permutation of A0: P * A0 */
-        if ( CHAMELEON_Comm_rank() == 0 ) {
-            int *ipiv;
-
-            ipiv = malloc( sizeof(int) * minMN );
-            CHAMELEON_Ipiv_Gather( descIPIV, ipiv, 0 );
-            LAPACKE_zlaswp( LAPACK_COL_MAJOR, N, descA0c->mat, M, 1, minMN, ipiv, 1 );
-            free( ipiv );
+            CHAMELEON_zplgtr_Tile( 0,     ChamUpper, descA0, seedA   );
+            CHAMELEON_zplgtr_Tile( minMN, ChamLower, descA0, seedA+1 );
         }
         else {
-            CHAMELEON_Ipiv_Gather( descIPIV, NULL, 0 );
+            CHAMELEON_zplrnt_Tile( descA0, seedA );
         }
 
-        CHAMELEON_zlacpy_Tile( ChamUpperLower, descA0c, descA0 );
-        CHAMELEON_Desc_Destroy( &descA0c );
+        CHAMELEON_zlaswp_Tile( ChamLeft, ChamDirForward, descA0, 1, descA0->m, descIPIV );
 
         hres += check_zxxtrf( args, ChamGeneral, ChamUpperLower,
                               descA0, descA );
 
         CHAMELEON_Desc_Destroy( &descA0 );
     }
-#endif /* !defined(CHAMELEON_SIMULATION) */
 
     if ( ws != NULL ) {
         CHAMELEON_zgetrf_WS_Free( ws );
@@ -223,7 +201,7 @@ testing_zgetrf_std( run_arg_list_t *args, int check )
         CHAMELEON_zplrnt( M, N, A0, LDA, seedA );
 
         /* Compute the permutation of A0: P * A0 */
-        LAPACKE_zlaswp( LAPACK_COL_MAJOR, N, A0, M, 1, minMN, IPIV, 1 );
+        CHAMELEON_zlaswp( ChamLeft, ChamDirForward, M, N, A0, 1, minMN, minMN, IPIV );
 
         hres += check_zxxtrf_std( args, ChamGeneral, ChamUpperLower, M, N, A0, A, LDA );