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

Go to the source code of this file.

Functions

void CORE_dgetrip (int m, int n, double *A, double *W)
void QUARK_CORE_dgetrip (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, double *A, int szeA)
void CORE_dgetrip_quark (Quark *quark)
void QUARK_CORE_dgetrip_f1 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, double *A, int szeA, double *fake, int szeF, int paramF)
void CORE_dgetrip_f1_quark (Quark *quark)
void QUARK_CORE_dgetrip_f2 (Quark *quark, Quark_Task_Flags *task_flags, int m, int n, double *A, int szeA, double *fake1, int szeF1, int paramF1, double *fake2, int szeF2, int paramF2)
void CORE_dgetrip_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

d Tue Nov 22 14:35:20 2011

Definition in file core_dgetrip.c.


Function Documentation

void CORE_dgetrip ( int  m,
int  n,
double *  A,
double *  W 
)

CORE_dgetrip 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_dgetrip.c.

{
double 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(double));
}
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_dgetrip_f1_quark ( Quark quark)

Definition at line 138 of file core_dgetrip.c.

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

{
int m;
int n;
double *A;
double *W;
double *fake;
quark_unpack_args_5(quark, m, n, A, W, fake);
CORE_dgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_dgetrip_f2_quark ( Quark quark)

Definition at line 178 of file core_dgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_dgetrip_quark ( Quark quark)

Definition at line 101 of file core_dgetrip.c.

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

{
int m;
int n;
double *A;
double *W;
quark_unpack_args_4(quark, m, n, A, W);
CORE_dgetrip(m, n, A, W);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_dgetrip ( Quark quark,
Quark_Task_Flags task_flags,
int  m,
int  n,
double *  A,
int  szeA 
)

Definition at line 82 of file core_dgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 115 of file core_dgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 153 of file core_dgetrip.c.

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

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

Here is the call graph for this function:

Here is the caller graph for this function: