diff --git a/coreblas/compute/core_ztile.c b/coreblas/compute/core_ztile.c index f27cebfd2eaa0221e41afeb05ea7c25f6f035a89..a544dfa7840865ec4abe08f14f7588bd6220be3a 100644 --- a/coreblas/compute/core_ztile.c +++ b/coreblas/compute/core_ztile.c @@ -39,7 +39,7 @@ TCORE_dzasum( cham_store_t storev, double * work ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_dzasum( storev, uplo, M, N, A->mat, A->ld, work ); + CORE_dzasum( storev, uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, work ); } int @@ -52,7 +52,7 @@ TCORE_zaxpy( int M, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zaxpy( M, alpha, A->mat, incA, B->mat, incB ); + return CORE_zaxpy( M, alpha, CHAM_tile_get_ptr( A ), incA, CHAM_tile_get_ptr( B ), incB ); } int @@ -64,9 +64,15 @@ TCORE_zgeadd( cham_trans_t trans, CHAMELEON_Complex64_t beta, CHAM_tile_t * B ) { - assert( A->format & CHAMELEON_TILE_FULLRANK ); - assert( B->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgeadd( trans, M, N, alpha, A->mat, A->ld, beta, B->mat, B->ld ); + if ( (A->format & CHAMELEON_TILE_DESC) && + (B->format & CHAMELEON_TILE_DESC) ) + { + assert(0); + } + + return CORE_zgeadd( trans, M, N, + alpha, CHAM_tile_get_ptr( A ), A->ld, + beta, CHAM_tile_get_ptr( B ), B->ld ); } int @@ -80,7 +86,7 @@ TCORE_zgelqt( int M, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgelqt( M, N, IB, A->mat, A->ld, T->mat, T->ld, TAU, WORK ); + return CORE_zgelqt( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( T ), T->ld, TAU, WORK ); } void @@ -112,7 +118,11 @@ TCORE_zgemm( cham_trans_t transA, assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); CORE_zgemm( - transA, transB, M, N, K, alpha, A->mat, A->ld, B->mat, B->ld, beta, C->mat, C->ld ); + transA, transB, M, N, K, alpha, + CHAM_tile_get_ptr( A ), A->ld, + CHAM_tile_get_ptr( B ), B->ld, + beta, + CHAM_tile_get_ptr( C ), C->ld ); } int @@ -126,7 +136,7 @@ TCORE_zgeqrt( int M, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgeqrt( M, N, IB, A->mat, A->ld, T->mat, T->ld, TAU, WORK ); + return CORE_zgeqrt( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( T ), T->ld, TAU, WORK ); } int @@ -134,7 +144,7 @@ TCORE_zgessm( int M, int N, int K, int IB, const int *IPIV, const CHAM_tile_t *L { assert( L->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgessm( M, N, K, IB, IPIV, L->mat, L->ld, A->mat, A->ld ); + return CORE_zgessm( M, N, K, IB, IPIV, CHAM_tile_get_ptr( L ), L->ld, CHAM_tile_get_ptr( A ), A->ld ); } int @@ -142,28 +152,28 @@ TCORE_zgessq( cham_store_t storev, int M, int N, const CHAM_tile_t *A, CHAM_tile { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgessq( storev, M, N, A->mat, A->ld, sclssq->mat ); + return CORE_zgessq( storev, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); } int TCORE_zgetrf( int M, int N, CHAM_tile_t *A, int *IPIV, int *INFO ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgetrf( M, N, A->mat, A->ld, IPIV, INFO ); + return CORE_zgetrf( M, N, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO ); } int TCORE_zgetrf_incpiv( int M, int N, int IB, CHAM_tile_t *A, int *IPIV, int *INFO ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgetrf_incpiv( M, N, IB, A->mat, A->ld, IPIV, INFO ); + return CORE_zgetrf_incpiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO ); } int TCORE_zgetrf_nopiv( int M, int N, int IB, CHAM_tile_t *A, int *INFO ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zgetrf_nopiv( M, N, IB, A->mat, A->ld, INFO ); + return CORE_zgetrf_nopiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, INFO ); } void @@ -171,7 +181,7 @@ TCORE_zhe2ge( cham_uplo_t uplo, int M, int N, const CHAM_tile_t *A, CHAM_tile_t { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); - CORE_zhe2ge( uplo, M, N, A->mat, A->ld, B->mat, B->ld ); + CORE_zhe2ge( uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); } #if defined( PRECISION_z ) || defined( PRECISION_c ) @@ -189,7 +199,7 @@ TCORE_zhemm( cham_side_t side, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zhemm( side, uplo, M, N, alpha, A->mat, A->ld, B->mat, B->ld, beta, C->mat, C->ld ); + CORE_zhemm( side, uplo, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } void @@ -204,7 +214,7 @@ TCORE_zherk( cham_uplo_t uplo, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zherk( uplo, trans, N, K, alpha, A->mat, A->ld, beta, C->mat, C->ld ); + CORE_zherk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } void @@ -221,7 +231,7 @@ TCORE_zher2k( cham_uplo_t uplo, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zher2k( uplo, trans, N, K, alpha, A->mat, A->ld, B->mat, B->ld, beta, C->mat, C->ld ); + CORE_zher2k( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } #endif @@ -241,7 +251,7 @@ TCORE_zherfb( cham_uplo_t uplo, assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); return CORE_zherfb( - uplo, N, K, IB, NB, A->mat, A->ld, T->mat, T->ld, C->mat, C->ld, WORK, ldwork ); + uplo, N, K, IB, NB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( T ), T->ld, CHAM_tile_get_ptr( C ), C->ld, WORK, ldwork ); } #if defined( PRECISION_z ) || defined( PRECISION_c ) @@ -254,16 +264,19 @@ TCORE_zhessq( cham_store_t storev, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zhessq( storev, uplo, N, A->mat, A->ld, sclssq->mat ); + return CORE_zhessq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); } #endif void TCORE_zlacpy( cham_uplo_t uplo, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *B ) { - assert( A->format & CHAMELEON_TILE_FULLRANK ); - assert( B->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlacpy( uplo, M, N, A->mat, A->ld, B->mat, B->ld ); + if (( A->format & CHAMELEON_TILE_DESC ) && + ( B->format & CHAMELEON_TILE_DESC ) ) + { + assert(0); /* This should have been handled at the codelet level */ + } + CORE_zlacpy( uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); } void @@ -275,7 +288,7 @@ TCORE_zlange( cham_normtype_t norm, double * normA ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlange( norm, M, N, A->mat, A->ld, work, normA ); + CORE_zlange( norm, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); } #if defined( PRECISION_z ) || defined( PRECISION_c ) @@ -288,7 +301,7 @@ TCORE_zlanhe( cham_normtype_t norm, double * normA ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlanhe( norm, uplo, N, A->mat, A->ld, work, normA ); + CORE_zlanhe( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); } #endif @@ -301,7 +314,7 @@ TCORE_zlansy( cham_normtype_t norm, double * normA ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlansy( norm, uplo, N, A->mat, A->ld, work, normA ); + CORE_zlansy( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); } void @@ -315,14 +328,14 @@ TCORE_zlantr( cham_normtype_t norm, double * normA ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlantr( norm, uplo, diag, M, N, A->mat, A->ld, work, normA ); + CORE_zlantr( norm, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); } int TCORE_zlascal( cham_uplo_t uplo, int m, int n, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zlascal( uplo, m, n, alpha, A->mat, A->ld ); + return CORE_zlascal( uplo, m, n, alpha, CHAM_tile_get_ptr( A ), A->ld ); } void @@ -334,14 +347,14 @@ TCORE_zlaset( cham_uplo_t uplo, CHAM_tile_t * A ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlaset( uplo, n1, n2, alpha, beta, A->mat, A->ld ); + CORE_zlaset( uplo, n1, n2, alpha, beta, CHAM_tile_get_ptr( A ), A->ld ); } void TCORE_zlaset2( cham_uplo_t uplo, int n1, int n2, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlaset2( uplo, n1, n2, alpha, A->mat, A->ld ); + CORE_zlaset2( uplo, n1, n2, alpha, CHAM_tile_get_ptr( A ), A->ld ); } int @@ -354,14 +367,14 @@ TCORE_zlatro( cham_uplo_t uplo, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zlatro( uplo, trans, M, N, A->mat, A->ld, B->mat, B->ld ); + return CORE_zlatro( uplo, trans, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); } void TCORE_zlauum( cham_uplo_t uplo, int N, CHAM_tile_t *A ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zlauum( uplo, N, A->mat, A->ld ); + CORE_zlauum( uplo, N, CHAM_tile_get_ptr( A ), A->ld ); } #if defined( PRECISION_z ) || defined( PRECISION_c ) @@ -376,7 +389,7 @@ TCORE_zplghe( double bump, unsigned long long int seed ) { assert( tileA->format & CHAMELEON_TILE_FULLRANK ); - CORE_zplghe( bump, m, n, tileA->mat, tileA->ld, bigM, m0, n0, seed ); + CORE_zplghe( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); } #endif @@ -391,7 +404,7 @@ TCORE_zplgsy( CHAMELEON_Complex64_t bump, unsigned long long int seed ) { assert( tileA->format & CHAMELEON_TILE_FULLRANK ); - CORE_zplgsy( bump, m, n, tileA->mat, tileA->ld, bigM, m0, n0, seed ); + CORE_zplgsy( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); } void @@ -404,14 +417,14 @@ TCORE_zplrnt( int m, unsigned long long int seed ) { assert( tileA->format & CHAMELEON_TILE_FULLRANK ); - CORE_zplrnt( m, n, tileA->mat, tileA->ld, bigM, m0, n0, seed ); + CORE_zplrnt( m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); } void TCORE_zpotrf( cham_uplo_t uplo, int n, CHAM_tile_t *A, int *INFO ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_zpotrf( uplo, n, A->mat, A->ld, INFO ); + CORE_zpotrf( uplo, n, CHAM_tile_get_ptr( A ), A->ld, INFO ); } int @@ -437,13 +450,13 @@ TCORE_zssssm( int M1, N2, K, IB, - A1->mat, + CHAM_tile_get_ptr( A1 ), A1->ld, - A2->mat, + CHAM_tile_get_ptr( A2 ), A2->ld, - L1->mat, + CHAM_tile_get_ptr( L1 ), L1->ld, - L2->mat, + CHAM_tile_get_ptr( L2 ), L2->ld, IPIV ); } @@ -462,7 +475,7 @@ TCORE_zsymm( cham_side_t side, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zsymm( side, uplo, M, N, alpha, A->mat, A->ld, B->mat, B->ld, beta, C->mat, C->ld ); + CORE_zsymm( side, uplo, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } void @@ -477,7 +490,7 @@ TCORE_zsyrk( cham_uplo_t uplo, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zsyrk( uplo, trans, N, K, alpha, A->mat, A->ld, beta, C->mat, C->ld ); + CORE_zsyrk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } void @@ -494,7 +507,7 @@ TCORE_zsyr2k( cham_uplo_t uplo, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); - CORE_zsyr2k( uplo, trans, N, K, alpha, A->mat, A->ld, B->mat, B->ld, beta, C->mat, C->ld ); + CORE_zsyr2k( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); } int @@ -506,7 +519,7 @@ TCORE_zsyssq( cham_store_t storev, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zsyssq( storev, uplo, N, A->mat, A->ld, sclssq->mat ); + return CORE_zsyssq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); } #if defined( PRECISION_z ) || defined( PRECISION_c ) @@ -514,7 +527,7 @@ int TCORE_zsytf2_nopiv( cham_uplo_t uplo, int n, CHAM_tile_t *A ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - return CORE_zsytf2_nopiv( uplo, n, A->mat, A->ld ); + return CORE_zsytf2_nopiv( uplo, n, CHAM_tile_get_ptr( A ), A->ld ); } #endif @@ -531,7 +544,7 @@ TCORE_ztplqt( int M, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & CHAMELEON_TILE_FULLRANK ); - return CORE_ztplqt( M, N, L, IB, A->mat, A->ld, B->mat, B->ld, T->mat, T->ld, WORK ); + return CORE_ztplqt( M, N, L, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, CHAM_tile_get_ptr( T ), T->ld, WORK ); } int @@ -559,13 +572,13 @@ TCORE_ztpmlqt( cham_side_t side, K, L, IB, - V->mat, + CHAM_tile_get_ptr( V ), V->ld, - T->mat, + CHAM_tile_get_ptr( T ), T->ld, - A->mat, + CHAM_tile_get_ptr( A ), A->ld, - B->mat, + CHAM_tile_get_ptr( B ), B->ld, WORK ); } @@ -595,13 +608,13 @@ TCORE_ztpmqrt( cham_side_t side, K, L, IB, - V->mat, + CHAM_tile_get_ptr( V ), V->ld, - T->mat, + CHAM_tile_get_ptr( T ), T->ld, - A->mat, + CHAM_tile_get_ptr( A ), A->ld, - B->mat, + CHAM_tile_get_ptr( B ), B->ld, WORK ); } @@ -619,7 +632,7 @@ TCORE_ztpqrt( int M, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & CHAMELEON_TILE_FULLRANK ); - return CORE_ztpqrt( M, N, L, IB, A->mat, A->ld, B->mat, B->ld, T->mat, T->ld, WORK ); + return CORE_ztpqrt( M, N, L, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld, CHAM_tile_get_ptr( T ), T->ld, WORK ); } int @@ -632,9 +645,12 @@ TCORE_ztradd( cham_uplo_t uplo, CHAMELEON_Complex64_t beta, CHAM_tile_t * B ) { - assert( A->format & CHAMELEON_TILE_FULLRANK ); - assert( B->format & CHAMELEON_TILE_FULLRANK ); - return CORE_ztradd( uplo, trans, M, N, alpha, A->mat, A->ld, beta, B->mat, B->ld ); + if (( A->format & CHAMELEON_TILE_DESC ) && + ( B->format & CHAMELEON_TILE_DESC ) ) + { + assert(0); /* This should have been handled at the codelet level */ + } + return CORE_ztradd( uplo, trans, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( B ), B->ld ); } void @@ -647,7 +663,7 @@ TCORE_ztrasm( cham_store_t storev, double * work ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_ztrasm( storev, uplo, diag, M, N, A->mat, A->ld, work ); + CORE_ztrasm( storev, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work ); } void @@ -663,7 +679,7 @@ TCORE_ztrmm( cham_side_t side, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); - CORE_ztrmm( side, uplo, transA, diag, M, N, alpha, A->mat, A->ld, B->mat, B->ld ); + CORE_ztrmm( side, uplo, transA, diag, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); } void @@ -679,7 +695,7 @@ TCORE_ztrsm( cham_side_t side, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & CHAMELEON_TILE_FULLRANK ); - CORE_ztrsm( side, uplo, transA, diag, M, N, alpha, A->mat, A->ld, B->mat, B->ld ); + CORE_ztrsm( side, uplo, transA, diag, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); } int @@ -692,15 +708,15 @@ TCORE_ztrssq( cham_uplo_t uplo, { assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); - double *W = sclssq->mat; - return CORE_ztrssq( uplo, diag, M, N, A->mat, A->ld, W, W + 1 ); + double *W = CHAM_tile_get_ptr( sclssq ); + return CORE_ztrssq( uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, W, W + 1 ); } void TCORE_ztrtri( cham_uplo_t uplo, cham_diag_t diag, int N, CHAM_tile_t *A, int *info ) { assert( A->format & CHAMELEON_TILE_FULLRANK ); - CORE_ztrtri( uplo, diag, N, A->mat, A->ld, info ); + CORE_ztrtri( uplo, diag, N, CHAM_tile_get_ptr( A ), A->ld, info ); } int @@ -731,13 +747,13 @@ TCORE_ztsmlq_hetra1( cham_side_t side, n2, k, ib, - A1->mat, + CHAM_tile_get_ptr( A1 ), A1->ld, - A2->mat, + CHAM_tile_get_ptr( A2 ), A2->ld, - V->mat, + CHAM_tile_get_ptr( V ), V->ld, - T->mat, + CHAM_tile_get_ptr( T ), T->ld, WORK, ldwork ); @@ -771,13 +787,13 @@ TCORE_ztsmqr_hetra1( cham_side_t side, n2, k, ib, - A1->mat, + CHAM_tile_get_ptr( A1 ), A1->ld, - A2->mat, + CHAM_tile_get_ptr( A2 ), A2->ld, - V->mat, + CHAM_tile_get_ptr( V ), V->ld, - T->mat, + CHAM_tile_get_ptr( T ), T->ld, WORK, ldwork ); @@ -800,7 +816,7 @@ TCORE_ztstrf( int M, assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( L->format & CHAMELEON_TILE_FULLRANK ); return CORE_ztstrf( - M, N, IB, NB, U->mat, U->ld, A->mat, A->ld, L->mat, L->ld, IPIV, WORK, LDWORK, INFO ); + M, N, IB, NB, CHAM_tile_get_ptr( U ), U->ld, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( L ), L->ld, IPIV, WORK, LDWORK, INFO ); } int @@ -820,7 +836,7 @@ TCORE_zunmlq( cham_side_t side, assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); return CORE_zunmlq( - side, trans, M, N, K, IB, V->mat, V->ld, T->mat, T->ld, C->mat, C->ld, WORK, LDWORK ); + side, trans, M, N, K, IB, CHAM_tile_get_ptr( V ), V->ld, CHAM_tile_get_ptr( T ), T->ld, CHAM_tile_get_ptr( C ), C->ld, WORK, LDWORK ); } int @@ -840,7 +856,7 @@ TCORE_zunmqr( cham_side_t side, assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & CHAMELEON_TILE_FULLRANK ); return CORE_zunmqr( - side, trans, M, N, K, IB, V->mat, V->ld, T->mat, T->ld, C->mat, C->ld, WORK, LDWORK ); + side, trans, M, N, K, IB, CHAM_tile_get_ptr( V ), V->ld, CHAM_tile_get_ptr( T ), T->ld, CHAM_tile_get_ptr( C ), C->ld, WORK, LDWORK ); } int @@ -859,5 +875,5 @@ TCORE_zgram( cham_uplo_t uplo, assert( D->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & CHAMELEON_TILE_FULLRANK ); return CORE_zgram( - uplo, M, N, Mt, Nt, Di->mat, Di->ld, Dj->mat, Dj->ld, D->mat, A->mat, A->ld ); + uplo, M, N, Mt, Nt, CHAM_tile_get_ptr( Di ), Di->ld, CHAM_tile_get_ptr( Dj ), Dj->ld, CHAM_tile_get_ptr( D ), CHAM_tile_get_ptr( A ), A->ld ); } diff --git a/include/chameleon/struct.h b/include/chameleon/struct.h index 1ac2edb55d5bd51d2fa969451d14eb0796e8536c..748daaa738b1fff51914ccb59856415797ab25e8 100644 --- a/include/chameleon/struct.h +++ b/include/chameleon/struct.h @@ -143,6 +143,15 @@ typedef struct chameleon_context_s { int mpi_outer_init; // MPI has been initialized outside our functions } CHAM_context_t; +static inline void * +CHAM_tile_get_ptr( const CHAM_tile_t *tile ) +{ + if ( tile->format & CHAMELEON_TILE_DESC ) { + return ((CHAM_desc_t*)(tile->mat))->mat; + } + return tile->mat; +} + END_C_DECLS #endif /* _chameleon_struct_h_ */