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
core_zgetrip.c File Reference
#include <stdlib.h>
#include "common.h"
#include "quark.h"
Include dependency graph for core_zgetrip.c:

Go to the source code of this file.

Functions

void CORE_zgetrip (int m, int n, PLASMA_Complex64_t *A, PLASMA_Complex64_t *W)
void QUARK_CORE_zgetrip (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex64_t *A, int szeA)
void CORE_zgetrip_quark (Quark *quark)
void QUARK_CORE_zgetrip_f1 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex64_t *A, int szeA, PLASMA_Complex64_t *fake, int szeF, int paramF)
void CORE_zgetrip_f1_quark (Quark *quark)
void QUARK_CORE_zgetrip_f2 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex64_t *A, int szeA, PLASMA_Complex64_t *fake1, int szeF1, int paramF1, PLASMA_Complex64_t *fake2, int szeF2, int paramF2)
void CORE_zgetrip_f2_quark (Quark *quark)

Detailed Description

PLASMA InPlaceTransformation module PLASMA is a software package provided by Univ. of Tennessee, Univ. of California Berkeley and Univ. of Colorado Denver

This work is the implementation of an inplace transformation based on the GKK algorithm by Gustavson, Karlsson, Kagstrom and its fortran implementation.

Version:
2.4.5
Author:
Mathieu Faverge
Date:
2010-11-15

normal z -> c d s

Definition in file core_zgetrip.c.


Function Documentation

void CORE_zgetrip ( int  m,
int  n,
PLASMA_Complex64_t A,
PLASMA_Complex64_t W 
)

CORE_zgetrip transposes a m-by-n matrix in place using an extra workspace of size m-by-n. Note : For square tile, workspace is not used.

Parameters:
[in]mNumber of lines of tile A
[in]nNumber of columns of tile A
[in,out]ATile of size m-by-n On exit, A = trans(A)
[out]WWorkspace of size n-by-m if n != m, NULL otherwise.

Definition at line 54 of file core_zgetrip.c.

{
int i, j;
if( m != n ) {
/* rectangular transposition (use workspace) */
for (i=0; i<m; i++) {
for (j=0; j<n; j++) {
W[j+i*n] = A[i+j*m];
}
}
memcpy(A, W, m*n*sizeof(PLASMA_Complex64_t));
}
else {
/* square transposition (swap pairwise) */
for (i=0; i<m; i++) {
for (j=i+1; j<n; j++) {
t = A[j+i*n];
A[j+i*n] = A[i+j*m];
A[i+j*m] = t;
}
}
}
}

Here is the caller graph for this function:

void CORE_zgetrip_f1_quark ( Quark quark)

Definition at line 138 of file core_zgetrip.c.

References A, CORE_zgetrip(), quark_unpack_args_5, and W.

{
int m;
int n;
quark_unpack_args_5(quark, m, n, A, W, fake);
CORE_zgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_zgetrip_f2_quark ( Quark quark)

Definition at line 178 of file core_zgetrip.c.

References A, CORE_zgetrip(), quark_unpack_args_6, and W.

{
int m;
int n;
quark_unpack_args_6(quark, m, n, A, W, fake1, fake2);
CORE_zgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_zgetrip_quark ( Quark quark)

Definition at line 101 of file core_zgetrip.c.

References A, CORE_zgetrip(), quark_unpack_args_4, and W.

{
int m;
int n;
quark_unpack_args_4(quark, m, n, A, W);
CORE_zgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_zgetrip ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
PLASMA_Complex64_t A,
int  szeA 
)

Definition at line 82 of file core_zgetrip.c.

References CORE_zgetrip_quark(), DAG_CORE_GETRIP, INOUT, QUARK_Insert_Task(), SCRATCH, and VALUE.

{
sizeof(int), &m, VALUE,
sizeof(int), &n, VALUE,
sizeof(PLASMA_Complex64_t)*szeA, A, INOUT,
sizeof(PLASMA_Complex64_t)*szeA, NULL, SCRATCH,
0);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_zgetrip_f1 ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
PLASMA_Complex64_t A,
int  szeA,
PLASMA_Complex64_t fake,
int  szeF,
int  paramF 
)

Definition at line 115 of file core_zgetrip.c.

References CORE_zgetrip_f1_quark(), DAG_CORE_GETRIP, INOUT, QUARK_Insert_Task(), SCRATCH, and VALUE.

{
quark, CORE_zgetrip_f1_quark, task_flags,
sizeof(int), &m, VALUE,
sizeof(int), &n, VALUE,
sizeof(PLASMA_Complex64_t)*szeA, A, INOUT,
sizeof(PLASMA_Complex64_t)*szeA, NULL, SCRATCH,
sizeof(PLASMA_Complex64_t)*szeF, fake, paramF,
0);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_zgetrip_f2 ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
PLASMA_Complex64_t A,
int  szeA,
PLASMA_Complex64_t fake1,
int  szeF1,
int  paramF1,
PLASMA_Complex64_t fake2,
int  szeF2,
int  paramF2 
)

Definition at line 153 of file core_zgetrip.c.

References CORE_zgetrip_f2_quark(), DAG_CORE_GETRIP, INOUT, QUARK_Insert_Task(), SCRATCH, and VALUE.

{
quark, CORE_zgetrip_f2_quark, task_flags,
sizeof(int), &m, VALUE,
sizeof(int), &n, VALUE,
sizeof(PLASMA_Complex64_t)*szeA, A, INOUT,
sizeof(PLASMA_Complex64_t)*szeA, NULL, SCRATCH,
sizeof(PLASMA_Complex64_t)*szeF1, fake1, paramF1,
sizeof(PLASMA_Complex64_t)*szeF2, fake2, paramF2,
0);
}

Here is the call graph for this function:

Here is the caller graph for this function: