PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
auxiliary.c File Reference
#include <plasma.h>
#include <core_blas.h>
#include "auxiliary.h"
Include dependency graph for auxiliary.c:

Go to the source code of this file.

Macros

#define map_cm(m, n, i, j)   ((i) + (j) * (m))
#define map_rm(m, n, i, j)   ((i) * (n) + (j))

Functions

int map_CM (int m, int n, int mb, int nb, int i, int j)
int map_RM (int m, int n, int mb, int nb, int i, int j)
int map_CCRB (int m, int n, int mb, int nb, int i, int j)
int map_CRRB (int m, int n, int mb, int nb, int i, int j)
int map_RCRB (int m, int n, int mb, int nb, int i, int j)
int map_RRRB (int m, int n, int mb, int nb, int i, int j)

Variables

int format [6] = { PlasmaCM, PlasmaCCRB, PlasmaCRRB, PlasmaRCRB, PlasmaRRRB, PlasmaRM }
int side [2] = { PlasmaLeft, PlasmaRight }
int uplo [2] = { PlasmaUpper, PlasmaLower }
int diag [2] = { PlasmaNonUnit, PlasmaUnit }
int trans [3] = { PlasmaNoTrans, PlasmaTrans, PlasmaConjTrans }
char * formatstr [6] = { "CM", "RM", "CCRB", "CRRB", "RCRB", "RRRB"}
char * sidestr [2] = { "Left ", "Right" }
char * uplostr [2] = { "Upper", "Lower" }
char * diagstr [2] = { "NonUnit", "Unit " }
char * transstr [3] = { "N", "T", "H" }
void * formatmap [6] = { map_CM, map_RM, map_CCRB, map_CRRB, map_RCRB, map_RRRB }

Macro Definition Documentation

#define map_cm (   m,
  n,
  i,
 
)    ((i) + (j) * (m))

Definition at line 21 of file auxiliary.c.

#define map_rm (   m,
  n,
  i,
 
)    ((i) * (n) + (j))

Definition at line 22 of file auxiliary.c.


Function Documentation

int map_CCRB ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 26 of file auxiliary.c.

References map_cm.

{
int m0 = m - m%mb;
int n0 = n - n%nb;
if ( j < n0 )
if (i < m0)
/* Case in A11 */
return ( map_cm( m/mb, n/nb, i/mb, j/nb )*mb*nb + map_cm( mb, nb, i%mb, j%nb) );
else
/* Case in A21 */
return ( m0*n0 + ( (j/nb) * (nb*(m%mb)) ) + map_cm( m%mb, nb, i%mb, j%nb) );
else
if (i < m0)
/* Case in A12 */
return ( m*n0 + ( (i/mb) * (mb*(n%nb)) ) + map_cm( mb, n%nb, i%mb, j%nb) );
else
/* Case in A22 */
return ( m*n0 + (n-n0)*m0 + map_cm( m%mb, n%nb, i%mb, j%nb) );
}
int map_CM ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 24 of file auxiliary.c.

References map_cm.

{ return map_cm(m, n, i, j); }
int map_CRRB ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 45 of file auxiliary.c.

References map_cm, and map_rm.

{
int m0 = m - m%mb;
int n0 = n - n%nb;
if ( j < n0 )
if (i < m0)
/* Case in A11 */
return ( map_cm( m/mb, n/nb, i/mb, j/nb )*mb*nb + map_rm( mb, nb, i%mb, j%nb) );
else
/* Case in A21 */
return ( m0*n0 + ( (j/nb) * (nb*(m%mb)) ) + map_rm( m%mb, nb, i%mb, j%nb) );
else
if (i < m0)
/* Case in A12 */
return ( m*n0 + ( (i/mb) * (mb*(n%nb)) ) + map_rm( mb, n%nb, i%mb, j%nb) );
else
/* Case in A22 */
return ( m*n0 + (n-n0)*m0 + map_rm( m%mb, n%nb, i%mb, j%nb) );
}
int map_RCRB ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 64 of file auxiliary.c.

References map_cm, and map_rm.

{
int m0 = m - m%mb;
int n0 = n - n%nb;
if ( j < n0 )
if (i < m0)
/* Case in A11 */
return ( map_rm( m/mb, n/nb, i/mb, j/nb )*mb*nb + map_cm( mb, nb, i%mb, j%nb) );
else
/* Case in A21 */
return ( m0*n + ( (j/nb) * (nb*(m%mb)) ) + map_cm( m%mb, nb, i%mb, j%nb) );
else
if (i < m0)
/* Case in A12 */
return ( m0*n0 + ( (i/mb) * (mb*(n%nb)) ) + map_cm( mb, n%nb, i%mb, j%nb) );
else
/* Case in A22 */
return ( m*n0 + (n-n0)*m0 + map_cm( m%mb, n%nb, i%mb, j%nb) );
}
int map_RM ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 25 of file auxiliary.c.

References map_rm.

{ return map_rm(m, n, i, j); }
int map_RRRB ( int  m,
int  n,
int  mb,
int  nb,
int  i,
int  j 
)

Definition at line 83 of file auxiliary.c.

References map_rm.

{
int m0 = m - m%mb;
int n0 = n - n%nb;
if ( j < n0 )
if (i < m0)
/* Case in A11 */
return ( map_rm( m/mb, n/nb, i/mb, j/nb )*mb*nb + map_rm( mb, nb, i%mb, j%nb) );
else
/* Case in A21 */
return ( m0*n + ( (j/nb) * (nb*(m%mb)) ) + map_rm( m%mb, nb, i%mb, j%nb) );
else
if (i < m0)
/* Case in A12 */
return ( m0*n0 + ( (i/mb) * (mb*(n%nb)) ) + map_rm( mb, n%nb, i%mb, j%nb) );
else
/* Case in A22 */
return ( m*n0 + (n-n0)*m0 + map_rm( m%mb, n%nb, i%mb, j%nb) );
}

Variable Documentation

int diag[2] = { PlasmaNonUnit, PlasmaUnit }

Definition at line 8 of file auxiliary.c.

char* diagstr[2] = { "NonUnit", "Unit " }

Definition at line 14 of file auxiliary.c.

Definition at line 5 of file auxiliary.c.

void* formatmap[6] = { map_CM, map_RM, map_CCRB, map_CRRB, map_RCRB, map_RRRB }

Definition at line 102 of file auxiliary.c.

char* formatstr[6] = { "CM", "RM", "CCRB", "CRRB", "RCRB", "RRRB"}

Definition at line 11 of file auxiliary.c.

int side[2] = { PlasmaLeft, PlasmaRight }

Definition at line 6 of file auxiliary.c.

char* sidestr[2] = { "Left ", "Right" }

Definition at line 12 of file auxiliary.c.

Definition at line 9 of file auxiliary.c.

char* transstr[3] = { "N", "T", "H" }

Definition at line 15 of file auxiliary.c.

int uplo[2] = { PlasmaUpper, PlasmaLower }

Definition at line 7 of file auxiliary.c.

char* uplostr[2] = { "Upper", "Lower" }

Definition at line 13 of file auxiliary.c.