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

Go to the source code of this file.

Functions

void CORE_cgetrip (int m, int n, PLASMA_Complex32_t *A, PLASMA_Complex32_t *W)
void QUARK_CORE_cgetrip (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex32_t *A, int szeA)
void CORE_cgetrip_quark (Quark *quark)
void QUARK_CORE_cgetrip_f1 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex32_t *A, int szeA, PLASMA_Complex32_t *fake, int szeF, int paramF)
void CORE_cgetrip_f1_quark (Quark *quark)
void QUARK_CORE_cgetrip_f2 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, PLASMA_Complex32_t *A, int szeA, PLASMA_Complex32_t *fake1, int szeF1, int paramF1, PLASMA_Complex32_t *fake2, int szeF2, int paramF2)
void CORE_cgetrip_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

c Tue Nov 22 14:35:20 2011

Definition in file core_cgetrip.c.


Function Documentation

void CORE_cgetrip ( int  m,
int  n,
PLASMA_Complex32_t A,
PLASMA_Complex32_t W 
)

CORE_cgetrip 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_cgetrip.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_Complex32_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_cgetrip_f1_quark ( Quark quark)

Definition at line 138 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_cgetrip_f2_quark ( Quark quark)

Definition at line 178 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_cgetrip_quark ( Quark quark)

Definition at line 101 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_cgetrip ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
PLASMA_Complex32_t A,
int  szeA 
)

Definition at line 82 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 115 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 153 of file core_cgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function: