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

Go to the source code of this file.

Functions

void CORE_sgetrip (int m, int n, float *A, float *W)
void QUARK_CORE_sgetrip (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, float *A, int szeA)
void CORE_sgetrip_quark (Quark *quark)
void QUARK_CORE_sgetrip_f1 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, float *A, int szeA, float *fake, int szeF, int paramF)
void CORE_sgetrip_f1_quark (Quark *quark)
void QUARK_CORE_sgetrip_f2 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, float *A, int szeA, float *fake1, int szeF1, int paramF1, float *fake2, int szeF2, int paramF2)
void CORE_sgetrip_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

s Tue Nov 22 14:35:20 2011

Definition in file core_sgetrip.c.


Function Documentation

void CORE_sgetrip ( int  m,
int  n,
float *  A,
float *  W 
)

CORE_sgetrip 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_sgetrip.c.

{
float t;
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(float));
}
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_sgetrip_f1_quark ( Quark quark)

Definition at line 138 of file core_sgetrip.c.

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

{
int m;
int n;
float *A;
float *W;
float *fake;
quark_unpack_args_5(quark, m, n, A, W, fake);
CORE_sgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_sgetrip_f2_quark ( Quark quark)

Definition at line 178 of file core_sgetrip.c.

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

{
int m;
int n;
float *A;
float *W;
float *fake1;
float *fake2;
quark_unpack_args_6(quark, m, n, A, W, fake1, fake2);
CORE_sgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_sgetrip_quark ( Quark quark)

Definition at line 101 of file core_sgetrip.c.

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

{
int m;
int n;
float *A;
float *W;
quark_unpack_args_4(quark, m, n, A, W);
CORE_sgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_sgetrip ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
float *  A,
int  szeA 
)

Definition at line 82 of file core_sgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_sgetrip_f1 ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
float *  A,
int  szeA,
float *  fake,
int  szeF,
int  paramF 
)

Definition at line 115 of file core_sgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_sgetrip_f2 ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
float *  A,
int  szeA,
float *  fake1,
int  szeF1,
int  paramF1,
float *  fake2,
int  szeF2,
int  paramF2 
)

Definition at line 153 of file core_sgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function: