Mentions légales du service

Skip to content
Snippets Groups Projects
Commit e03d0dd1 authored by Mathieu Faverge's avatar Mathieu Faverge
Browse files

coreblas: Handle recursive descriptors

parent 2e09db0d
No related branches found
No related tags found
1 merge request!256Update on descriptors
...@@ -42,7 +42,7 @@ TCORE_dzasum( cham_store_t storev, ...@@ -42,7 +42,7 @@ TCORE_dzasum( cham_store_t storev,
const CHAM_tile_t *A, const CHAM_tile_t *A,
double * work ) double * work )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_dzasum( storev, uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, work ); CORE_dzasum( storev, uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, work );
} }
...@@ -54,8 +54,8 @@ TCORE_zaxpy( int M, ...@@ -54,8 +54,8 @@ TCORE_zaxpy( int M,
CHAM_tile_t * B, CHAM_tile_t * B,
int incB ) int incB )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zaxpy( M, alpha, CHAM_tile_get_ptr( A ), incA, CHAM_tile_get_ptr( B ), incB ); return CORE_zaxpy( M, alpha, CHAM_tile_get_ptr( A ), incA, CHAM_tile_get_ptr( B ), incB );
} }
...@@ -88,8 +88,8 @@ TCORE_zgelqt( int M, ...@@ -88,8 +88,8 @@ TCORE_zgelqt( int M,
CHAMELEON_Complex64_t *TAU, CHAMELEON_Complex64_t *TAU,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zgelqt( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( T ), 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 );
} }
...@@ -118,9 +118,9 @@ TCORE_zgemm( cham_trans_t transA, ...@@ -118,9 +118,9 @@ TCORE_zgemm( cham_trans_t transA,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
if ( ( A->format & CHAMELEON_TILE_FULLRANK ) && if ( ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) &&
( B->format & CHAMELEON_TILE_FULLRANK ) && ( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) &&
( C->format & CHAMELEON_TILE_FULLRANK ) ) ( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) )
{ {
CORE_zgemm( transA, transB, M, N, K, alpha, CORE_zgemm( transA, transB, M, N, K, alpha,
CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( A ), A->ld,
...@@ -164,24 +164,24 @@ TCORE_zgeqrt( int M, ...@@ -164,24 +164,24 @@ TCORE_zgeqrt( int M,
CHAMELEON_Complex64_t *TAU, CHAMELEON_Complex64_t *TAU,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zgeqrt( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( T ), 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 int
TCORE_zgessm( int M, int N, int K, int IB, const int *IPIV, const CHAM_tile_t *L, CHAM_tile_t *A ) TCORE_zgessm( int M, int N, int K, int IB, const int *IPIV, const CHAM_tile_t *L, CHAM_tile_t *A )
{ {
assert( L->format & CHAMELEON_TILE_FULLRANK ); assert( L->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zgessm( M, N, K, IB, IPIV, CHAM_tile_get_ptr( L ), L->ld, CHAM_tile_get_ptr( A ), 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 int
TCORE_zgessq( cham_store_t storev, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *sclssq ) TCORE_zgessq( cham_store_t storev, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *sclssq )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zgessq( storev, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); return CORE_zgessq( storev, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) );
} }
...@@ -189,7 +189,7 @@ int ...@@ -189,7 +189,7 @@ int
TCORE_zgetrf( int M, int N, CHAM_tile_t *A, int *IPIV, int *INFO ) TCORE_zgetrf( int M, int N, CHAM_tile_t *A, int *IPIV, int *INFO )
{ {
int rc = -1; int rc = -1;
if ( A->format & CHAMELEON_TILE_FULLRANK ) { if ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) {
rc = CORE_zgetrf( M, N, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO ); rc = CORE_zgetrf( M, N, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO );
} }
#if defined( CHAMELEON_USE_HMAT ) #if defined( CHAMELEON_USE_HMAT )
...@@ -207,7 +207,7 @@ TCORE_zgetrf( int M, int N, CHAM_tile_t *A, int *IPIV, int *INFO ) ...@@ -207,7 +207,7 @@ TCORE_zgetrf( int M, int N, CHAM_tile_t *A, int *IPIV, int *INFO )
int int
TCORE_zgetrf_incpiv( int M, int N, int IB, CHAM_tile_t *A, int *IPIV, int *INFO ) TCORE_zgetrf_incpiv( int M, int N, int IB, CHAM_tile_t *A, int *IPIV, int *INFO )
{ {
if ( A->format & CHAMELEON_TILE_FULLRANK ) { if ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) {
return CORE_zgetrf_incpiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO ); return CORE_zgetrf_incpiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, IPIV, INFO );
} }
#if defined( CHAMELEON_USE_HMAT ) #if defined( CHAMELEON_USE_HMAT )
...@@ -227,7 +227,7 @@ TCORE_zgetrf_nopiv( int M, int N, int IB, CHAM_tile_t *A, int *INFO ) ...@@ -227,7 +227,7 @@ TCORE_zgetrf_nopiv( int M, int N, int IB, CHAM_tile_t *A, int *INFO )
int rc = -1; int rc = -1;
*INFO = 0; *INFO = 0;
if ( A->format & CHAMELEON_TILE_FULLRANK ) { if ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) {
rc = CORE_zgetrf_nopiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, INFO ); rc = CORE_zgetrf_nopiv( M, N, IB, CHAM_tile_get_ptr( A ), A->ld, INFO );
} }
#if defined( CHAMELEON_USE_HMAT ) #if defined( CHAMELEON_USE_HMAT )
...@@ -245,8 +245,8 @@ TCORE_zgetrf_nopiv( int M, int N, int IB, CHAM_tile_t *A, int *INFO ) ...@@ -245,8 +245,8 @@ TCORE_zgetrf_nopiv( int M, int N, int IB, CHAM_tile_t *A, int *INFO )
void void
TCORE_zhe2ge( cham_uplo_t uplo, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *B ) TCORE_zhe2ge( cham_uplo_t uplo, int M, int N, const CHAM_tile_t *A, CHAM_tile_t *B )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zhe2ge( uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); CORE_zhe2ge( uplo, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld );
} }
...@@ -262,9 +262,9 @@ TCORE_zhemm( cham_side_t side, ...@@ -262,9 +262,9 @@ TCORE_zhemm( cham_side_t side,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 );
} }
...@@ -278,8 +278,8 @@ TCORE_zherk( cham_uplo_t uplo, ...@@ -278,8 +278,8 @@ TCORE_zherk( cham_uplo_t uplo,
double beta, double beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zherk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); CORE_zherk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld );
} }
...@@ -294,9 +294,9 @@ TCORE_zher2k( cham_uplo_t uplo, ...@@ -294,9 +294,9 @@ TCORE_zher2k( cham_uplo_t uplo,
double beta, double beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 #endif
...@@ -313,9 +313,9 @@ TCORE_zherfb( cham_uplo_t uplo, ...@@ -313,9 +313,9 @@ TCORE_zherfb( cham_uplo_t uplo,
CHAMELEON_Complex64_t *WORK, CHAMELEON_Complex64_t *WORK,
int ldwork ) int ldwork )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zherfb( return CORE_zherfb(
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 ); 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 );
} }
...@@ -328,8 +328,8 @@ TCORE_zhessq( cham_store_t storev, ...@@ -328,8 +328,8 @@ TCORE_zhessq( cham_store_t storev,
const CHAM_tile_t *A, const CHAM_tile_t *A,
CHAM_tile_t * sclssq ) CHAM_tile_t * sclssq )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zhessq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); return CORE_zhessq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) );
} }
#endif #endif
...@@ -353,7 +353,7 @@ TCORE_zlange( cham_normtype_t norm, ...@@ -353,7 +353,7 @@ TCORE_zlange( cham_normtype_t norm,
double * work, double * work,
double * normA ) double * normA )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlange( norm, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); CORE_zlange( norm, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA );
} }
...@@ -366,7 +366,7 @@ TCORE_zlanhe( cham_normtype_t norm, ...@@ -366,7 +366,7 @@ TCORE_zlanhe( cham_normtype_t norm,
double * work, double * work,
double * normA ) double * normA )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlanhe( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); CORE_zlanhe( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA );
} }
#endif #endif
...@@ -379,7 +379,7 @@ TCORE_zlansy( cham_normtype_t norm, ...@@ -379,7 +379,7 @@ TCORE_zlansy( cham_normtype_t norm,
double * work, double * work,
double * normA ) double * normA )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlansy( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); CORE_zlansy( norm, uplo, N, CHAM_tile_get_ptr( A ), A->ld, work, normA );
} }
...@@ -393,14 +393,14 @@ TCORE_zlantr( cham_normtype_t norm, ...@@ -393,14 +393,14 @@ TCORE_zlantr( cham_normtype_t norm,
double * work, double * work,
double * normA ) double * normA )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlantr( norm, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA ); CORE_zlantr( norm, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work, normA );
} }
int int
TCORE_zlascal( cham_uplo_t uplo, int m, int n, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A ) TCORE_zlascal( cham_uplo_t uplo, int m, int n, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zlascal( uplo, m, n, alpha, CHAM_tile_get_ptr( A ), A->ld ); return CORE_zlascal( uplo, m, n, alpha, CHAM_tile_get_ptr( A ), A->ld );
} }
...@@ -412,14 +412,14 @@ TCORE_zlaset( cham_uplo_t uplo, ...@@ -412,14 +412,14 @@ TCORE_zlaset( cham_uplo_t uplo,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * A ) CHAM_tile_t * A )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlaset( uplo, n1, n2, alpha, beta, CHAM_tile_get_ptr( A ), A->ld ); CORE_zlaset( uplo, n1, n2, alpha, beta, CHAM_tile_get_ptr( A ), A->ld );
} }
void void
TCORE_zlaset2( cham_uplo_t uplo, int n1, int n2, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A ) TCORE_zlaset2( cham_uplo_t uplo, int n1, int n2, CHAMELEON_Complex64_t alpha, CHAM_tile_t *A )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlaset2( uplo, n1, n2, alpha, CHAM_tile_get_ptr( A ), A->ld ); CORE_zlaset2( uplo, n1, n2, alpha, CHAM_tile_get_ptr( A ), A->ld );
} }
...@@ -431,15 +431,15 @@ TCORE_zlatro( cham_uplo_t uplo, ...@@ -431,15 +431,15 @@ TCORE_zlatro( cham_uplo_t uplo,
const CHAM_tile_t *A, const CHAM_tile_t *A,
CHAM_tile_t * B ) CHAM_tile_t * B )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zlatro( uplo, trans, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld ); return CORE_zlatro( uplo, trans, M, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), B->ld );
} }
void void
TCORE_zlauum( cham_uplo_t uplo, int N, CHAM_tile_t *A ) TCORE_zlauum( cham_uplo_t uplo, int N, CHAM_tile_t *A )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zlauum( uplo, N, CHAM_tile_get_ptr( A ), A->ld ); CORE_zlauum( uplo, N, CHAM_tile_get_ptr( A ), A->ld );
} }
...@@ -454,7 +454,7 @@ TCORE_zplghe( double bump, ...@@ -454,7 +454,7 @@ TCORE_zplghe( double bump,
int n0, int n0,
unsigned long long int seed ) unsigned long long int seed )
{ {
assert( tileA->format & CHAMELEON_TILE_FULLRANK ); assert( tileA->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zplghe( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); CORE_zplghe( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed );
} }
#endif #endif
...@@ -469,7 +469,7 @@ TCORE_zplgsy( CHAMELEON_Complex64_t bump, ...@@ -469,7 +469,7 @@ TCORE_zplgsy( CHAMELEON_Complex64_t bump,
int n0, int n0,
unsigned long long int seed ) unsigned long long int seed )
{ {
assert( tileA->format & CHAMELEON_TILE_FULLRANK ); assert( tileA->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zplgsy( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); CORE_zplgsy( bump, m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed );
} }
...@@ -482,14 +482,14 @@ TCORE_zplrnt( int m, ...@@ -482,14 +482,14 @@ TCORE_zplrnt( int m,
int n0, int n0,
unsigned long long int seed ) unsigned long long int seed )
{ {
assert( tileA->format & CHAMELEON_TILE_FULLRANK ); assert( tileA->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zplrnt( m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed ); CORE_zplrnt( m, n, CHAM_tile_get_ptr( tileA ), tileA->ld, bigM, m0, n0, seed );
} }
void void
TCORE_zpotrf( cham_uplo_t uplo, int n, CHAM_tile_t *A, int *INFO ) TCORE_zpotrf( cham_uplo_t uplo, int n, CHAM_tile_t *A, int *INFO )
{ {
if ( A->format & CHAMELEON_TILE_FULLRANK ) { if ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) {
CORE_zpotrf( uplo, n, CHAM_tile_get_ptr( A ), A->ld, INFO ); CORE_zpotrf( uplo, n, CHAM_tile_get_ptr( A ), A->ld, INFO );
} }
#if defined( CHAMELEON_USE_HMAT ) #if defined( CHAMELEON_USE_HMAT )
...@@ -517,10 +517,10 @@ TCORE_zssssm( int M1, ...@@ -517,10 +517,10 @@ TCORE_zssssm( int M1,
const CHAM_tile_t *L2, const CHAM_tile_t *L2,
const int * IPIV ) const int * IPIV )
{ {
assert( A1->format & CHAMELEON_TILE_FULLRANK ); assert( A1->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A2->format & CHAMELEON_TILE_FULLRANK ); assert( A2->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( L1->format & CHAMELEON_TILE_FULLRANK ); assert( L1->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( L2->format & CHAMELEON_TILE_FULLRANK ); assert( L2->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zssssm( M1, return CORE_zssssm( M1,
N1, N1,
M2, M2,
...@@ -549,9 +549,9 @@ TCORE_zsymm( cham_side_t side, ...@@ -549,9 +549,9 @@ TCORE_zsymm( cham_side_t side,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 );
} }
...@@ -565,8 +565,8 @@ TCORE_zsyrk( cham_uplo_t uplo, ...@@ -565,8 +565,8 @@ TCORE_zsyrk( cham_uplo_t uplo,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_zsyrk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld ); CORE_zsyrk( uplo, trans, N, K, alpha, CHAM_tile_get_ptr( A ), A->ld, beta, CHAM_tile_get_ptr( C ), C->ld );
} }
...@@ -581,9 +581,9 @@ TCORE_zsyr2k( cham_uplo_t uplo, ...@@ -581,9 +581,9 @@ TCORE_zsyr2k( cham_uplo_t uplo,
CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t beta,
CHAM_tile_t * C ) CHAM_tile_t * C )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 );
} }
...@@ -594,8 +594,8 @@ TCORE_zsyssq( cham_store_t storev, ...@@ -594,8 +594,8 @@ TCORE_zsyssq( cham_store_t storev,
const CHAM_tile_t *A, const CHAM_tile_t *A,
CHAM_tile_t * sclssq ) CHAM_tile_t * sclssq )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zsyssq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) ); return CORE_zsyssq( storev, uplo, N, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( sclssq ) );
} }
...@@ -603,7 +603,7 @@ TCORE_zsyssq( cham_store_t storev, ...@@ -603,7 +603,7 @@ TCORE_zsyssq( cham_store_t storev,
int int
TCORE_zsytf2_nopiv( cham_uplo_t uplo, int n, CHAM_tile_t *A ) TCORE_zsytf2_nopiv( cham_uplo_t uplo, int n, CHAM_tile_t *A )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zsytf2_nopiv( uplo, n, CHAM_tile_get_ptr( A ), A->ld ); return CORE_zsytf2_nopiv( uplo, n, CHAM_tile_get_ptr( A ), A->ld );
} }
#endif #endif
...@@ -618,9 +618,9 @@ TCORE_ztplqt( int M, ...@@ -618,9 +618,9 @@ TCORE_ztplqt( int M,
CHAM_tile_t * T, CHAM_tile_t * T,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 );
} }
...@@ -638,10 +638,10 @@ TCORE_ztpmlqt( cham_side_t side, ...@@ -638,10 +638,10 @@ TCORE_ztpmlqt( cham_side_t side,
CHAM_tile_t * B, CHAM_tile_t * B,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_ztpmlqt( side, return CORE_ztpmlqt( side,
trans, trans,
M, M,
...@@ -674,10 +674,10 @@ TCORE_ztpmqrt( cham_side_t side, ...@@ -674,10 +674,10 @@ TCORE_ztpmqrt( cham_side_t side,
CHAM_tile_t * B, CHAM_tile_t * B,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_ztpmqrt( side, return CORE_ztpmqrt( side,
trans, trans,
M, M,
...@@ -706,9 +706,9 @@ TCORE_ztpqrt( int M, ...@@ -706,9 +706,9 @@ TCORE_ztpqrt( int M,
CHAM_tile_t * T, CHAM_tile_t * T,
CHAMELEON_Complex64_t *WORK ) CHAMELEON_Complex64_t *WORK )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
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 ); 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 );
} }
...@@ -739,7 +739,7 @@ TCORE_ztrasm( cham_store_t storev, ...@@ -739,7 +739,7 @@ TCORE_ztrasm( cham_store_t storev,
const CHAM_tile_t *A, const CHAM_tile_t *A,
double * work ) double * work )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_ztrasm( storev, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work ); CORE_ztrasm( storev, uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, work );
} }
...@@ -754,8 +754,8 @@ TCORE_ztrmm( cham_side_t side, ...@@ -754,8 +754,8 @@ TCORE_ztrmm( cham_side_t side,
const CHAM_tile_t * A, const CHAM_tile_t * A,
CHAM_tile_t * B ) CHAM_tile_t * B )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( B->format & CHAMELEON_TILE_FULLRANK ); assert( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_ztrmm( side, uplo, transA, diag, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), 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 );
} }
...@@ -770,13 +770,14 @@ TCORE_ztrsm( cham_side_t side, ...@@ -770,13 +770,14 @@ TCORE_ztrsm( cham_side_t side,
const CHAM_tile_t * A, const CHAM_tile_t * A,
CHAM_tile_t * B ) CHAM_tile_t * B )
{ {
if ( ( A->format & CHAMELEON_TILE_FULLRANK ) && if ( ( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) &&
( B->format & CHAMELEON_TILE_FULLRANK ) ) ( B->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) ) )
{ {
CORE_ztrsm( side, uplo, transA, diag, M, N, alpha, CHAM_tile_get_ptr( A ), A->ld, CHAM_tile_get_ptr( B ), 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 );
} }
#if defined( CHAMELEON_USE_HMAT ) #if defined( CHAMELEON_USE_HMAT )
else if ( A->format & CHAMELEON_TILE_HMAT ) { else if ( A->format & CHAMELEON_TILE_HMAT ) {
assert( !(B->format & CHAMELEON_TILE_DESC) );
hmat_ztrsm( chameleon_lapack_const( side ), hmat_ztrsm( chameleon_lapack_const( side ),
chameleon_lapack_const( uplo ), chameleon_lapack_const( uplo ),
chameleon_lapack_const( transA ), chameleon_lapack_const( transA ),
...@@ -799,8 +800,8 @@ TCORE_ztrssq( cham_uplo_t uplo, ...@@ -799,8 +800,8 @@ TCORE_ztrssq( cham_uplo_t uplo,
const CHAM_tile_t *A, const CHAM_tile_t *A,
CHAM_tile_t * sclssq ) CHAM_tile_t * sclssq )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( sclssq->format & CHAMELEON_TILE_FULLRANK ); assert( sclssq->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
double *W = CHAM_tile_get_ptr( sclssq ); double *W = CHAM_tile_get_ptr( sclssq );
return CORE_ztrssq( uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, W, W + 1 ); return CORE_ztrssq( uplo, diag, M, N, CHAM_tile_get_ptr( A ), A->ld, W, W + 1 );
} }
...@@ -808,7 +809,7 @@ TCORE_ztrssq( cham_uplo_t uplo, ...@@ -808,7 +809,7 @@ TCORE_ztrssq( cham_uplo_t uplo,
void void
TCORE_ztrtri( cham_uplo_t uplo, cham_diag_t diag, int N, CHAM_tile_t *A, int *info ) TCORE_ztrtri( cham_uplo_t uplo, cham_diag_t diag, int N, CHAM_tile_t *A, int *info )
{ {
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
CORE_ztrtri( uplo, diag, N, CHAM_tile_get_ptr( A ), A->ld, info ); CORE_ztrtri( uplo, diag, N, CHAM_tile_get_ptr( A ), A->ld, info );
} }
...@@ -828,10 +829,10 @@ TCORE_ztsmlq_hetra1( cham_side_t side, ...@@ -828,10 +829,10 @@ TCORE_ztsmlq_hetra1( cham_side_t side,
CHAMELEON_Complex64_t *WORK, CHAMELEON_Complex64_t *WORK,
int ldwork ) int ldwork )
{ {
assert( A1->format & CHAMELEON_TILE_FULLRANK ); assert( A1->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A2->format & CHAMELEON_TILE_FULLRANK ); assert( A2->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_ztsmlq_hetra1( side, return CORE_ztsmlq_hetra1( side,
trans, trans,
m1, m1,
...@@ -868,10 +869,10 @@ TCORE_ztsmqr_hetra1( cham_side_t side, ...@@ -868,10 +869,10 @@ TCORE_ztsmqr_hetra1( cham_side_t side,
CHAMELEON_Complex64_t *WORK, CHAMELEON_Complex64_t *WORK,
int ldwork ) int ldwork )
{ {
assert( A1->format & CHAMELEON_TILE_FULLRANK ); assert( A1->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A2->format & CHAMELEON_TILE_FULLRANK ); assert( A2->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_ztsmqr_hetra1( side, return CORE_ztsmqr_hetra1( side,
trans, trans,
m1, m1,
...@@ -905,9 +906,9 @@ TCORE_ztstrf( int M, ...@@ -905,9 +906,9 @@ TCORE_ztstrf( int M,
int LDWORK, int LDWORK,
int * INFO ) int * INFO )
{ {
assert( U->format & CHAMELEON_TILE_FULLRANK ); assert( U->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( L->format & CHAMELEON_TILE_FULLRANK ); assert( L->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_ztstrf( return CORE_ztstrf(
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 ); 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 );
} }
...@@ -925,9 +926,9 @@ TCORE_zunmlq( cham_side_t side, ...@@ -925,9 +926,9 @@ TCORE_zunmlq( cham_side_t side,
CHAMELEON_Complex64_t *WORK, CHAMELEON_Complex64_t *WORK,
int LDWORK ) int LDWORK )
{ {
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zunmlq( return CORE_zunmlq(
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 ); 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 );
} }
...@@ -945,9 +946,9 @@ TCORE_zunmqr( cham_side_t side, ...@@ -945,9 +946,9 @@ TCORE_zunmqr( cham_side_t side,
CHAMELEON_Complex64_t *WORK, CHAMELEON_Complex64_t *WORK,
int LDWORK ) int LDWORK )
{ {
assert( V->format & CHAMELEON_TILE_FULLRANK ); assert( V->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( T->format & CHAMELEON_TILE_FULLRANK ); assert( T->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( C->format & CHAMELEON_TILE_FULLRANK ); assert( C->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zunmqr( return CORE_zunmqr(
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 ); 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 );
} }
...@@ -963,10 +964,10 @@ TCORE_zgram( cham_uplo_t uplo, ...@@ -963,10 +964,10 @@ TCORE_zgram( cham_uplo_t uplo,
const CHAM_tile_t *D, const CHAM_tile_t *D,
CHAM_tile_t * A ) CHAM_tile_t * A )
{ {
assert( Di->format & CHAMELEON_TILE_FULLRANK ); assert( Di->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( Dj->format & CHAMELEON_TILE_FULLRANK ); assert( Dj->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( D->format & CHAMELEON_TILE_FULLRANK ); assert( D->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
assert( A->format & CHAMELEON_TILE_FULLRANK ); assert( A->format & (CHAMELEON_TILE_FULLRANK | CHAMELEON_TILE_DESC) );
return CORE_zgram( return CORE_zgram(
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 ); 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 );
} }
...@@ -385,8 +385,10 @@ void RUNTIME_data_flush( const RUNTIME_sequence_t *sequence, ...@@ -385,8 +385,10 @@ void RUNTIME_data_flush( const RUNTIME_sequence_t *sequence,
int64_t mm = m + (A->i / A->mb); int64_t mm = m + (A->i / A->mb);
int64_t nn = n + (A->j / A->nb); int64_t nn = n + (A->j / A->nb);
int64_t shift = ((int64_t)A->lmt) * nn + mm; int64_t shift = ((int64_t)A->lmt) * nn + mm;
starpu_data_handle_t *handle = A->schedopt + shift; starpu_data_handle_t *handle = A->schedopt;
CHAM_tile_t *tile = A->tiles + shift; CHAM_tile_t *tile = A->tiles;
handle += shift;
tile += shift;
if (*handle == NULL) { if (*handle == NULL) {
return; return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment