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

Go to the source code of this file.

Macros

#define COMPLEX
#define Rnd64_A   6364136223846793005ULL
#define Rnd64_C   1ULL
#define RndF_Mul   5.4210108624275222e-20f
#define RndD_Mul   5.4210108624275222e-20
#define NBELEM   2

Functions

void CORE_zplghe (double bump, int m, int n, PLASMA_Complex64_t *A, int lda, int bigM, int m0, int n0, unsigned long long int seed)
void QUARK_CORE_zplghe (Quark *quark, Quark_Task_Flags *task_flags, double bump, int m, int n, PLASMA_Complex64_t *A, int lda, int bigM, int m0, int n0, unsigned long long int seed)
void CORE_zplghe_quark (Quark *quark)

Detailed Description

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

Version:
2.4.5
Author:
Piotr Luszczek
Pierre Lemarinier
Mathieu Faverge
Date:
2010-11-15 normal z -> c

Definition in file core_zplghe.c.


Macro Definition Documentation

#define COMPLEX

Definition at line 19 of file core_zplghe.c.

#define NBELEM   2

Definition at line 36 of file core_zplghe.c.

#define Rnd64_A   6364136223846793005ULL

Definition at line 30 of file core_zplghe.c.

#define Rnd64_C   1ULL

Definition at line 31 of file core_zplghe.c.

#define RndD_Mul   5.4210108624275222e-20

Definition at line 33 of file core_zplghe.c.

#define RndF_Mul   5.4210108624275222e-20f

Definition at line 32 of file core_zplghe.c.


Function Documentation

void CORE_zplghe ( double  bump,
int  m,
int  n,
PLASMA_Complex64_t A,
int  lda,
int  bigM,
int  m0,
int  n0,
unsigned long long int  seed 
)

Definition at line 64 of file core_zplghe.c.

References A, cimag(), conj(), NBELEM, Rnd64_A, Rnd64_C, and RndF_Mul.

{
int64_t i, j;
unsigned long long int ran, jump;
jump = m0 + n0 * bigM;
/*
* Tile diagonal
*/
if ( m0 == n0 ) {
for (j = 0; j < n; j++) {
ran = Rnd64_jump( NBELEM * jump, seed );
for (i = j; i < m; i++) {
*tmp = 0.5f - ran * RndF_Mul;
ran = Rnd64_A * ran + Rnd64_C;
#ifdef COMPLEX
*tmp += I*(0.5f - ran * RndF_Mul);
ran = Rnd64_A * ran + Rnd64_C;
#endif
tmp++;
}
tmp += (lda - i + j + 1);
jump += bigM + j;
}
for (j = 0; j < n; j++) {
#ifdef COMPLEX
A[j+j*lda] += bump - I*cimag( A[j+j*lda] );
#else
A[j+j*lda] += bump;
#endif
for (i=0; i<j; i++) {
A[lda*j+i] = conj( A[lda*i+j] );
}
}
}
/*
* Lower part
*/
else if ( m0 > n0 ) {
for (j = 0; j < n; j++) {
ran = Rnd64_jump( NBELEM * jump, seed );
for (i = 0; i < m; i++) {
*tmp = 0.5f - ran * RndF_Mul;
ran = Rnd64_A * ran + Rnd64_C;
#ifdef COMPLEX
*tmp += I*(0.5f - ran * RndF_Mul);
ran = Rnd64_A * ran + Rnd64_C;
#endif
tmp++;
}
tmp += (lda - i);
jump += bigM;
}
}
/*
* Upper part
*/
else if ( m0 < n0 ) {
/* Overwrite jump */
jump = n0 + m0 * bigM;
for (i = 0; i < m; i++) {
ran = Rnd64_jump( NBELEM * jump, seed );
for (j = 0; j < n; j++) {
A[j*lda+i] = 0.5f - ran * RndF_Mul;
ran = Rnd64_A * ran + Rnd64_C;
#ifdef COMPLEX
A[j*lda+i] -= I*(0.5f - ran * RndF_Mul);
ran = Rnd64_A * ran + Rnd64_C;
#endif
}
jump += bigM;
}
}
}

Here is the call graph for this function:

Here is the caller graph for this function:

void CORE_zplghe_quark ( Quark quark)

Definition at line 176 of file core_zplghe.c.

References A, CORE_zplghe(), and quark_unpack_args_9.

{
double bump;
int m;
int n;
int lda;
int bigM;
int m0;
int n0;
unsigned long long int seed;
quark_unpack_args_9( quark, bump, m, n, A, lda, bigM, m0, n0, seed );
CORE_zplghe( bump, m, n, A, lda, bigM, m0, n0, seed );
}

Here is the call graph for this function:

Here is the caller graph for this function:

void QUARK_CORE_zplghe ( Quark quark,
Quark_Task_Flags task_flags,
double  bump,
int  m,
int  n,
PLASMA_Complex64_t A,
int  lda,
int  bigM,
int  m0,
int  n0,
unsigned long long int  seed 
)

Definition at line 151 of file core_zplghe.c.

References CORE_zplghe_quark(), DAG_CORE_PLGHE, OUTPUT, QUARK_Insert_Task(), and VALUE.

{
sizeof(double), &bump, VALUE,
sizeof(int), &m, VALUE,
sizeof(int), &n, VALUE,
sizeof(PLASMA_Complex64_t)*lda*n, A, OUTPUT,
sizeof(int), &lda, VALUE,
sizeof(int), &bigM, VALUE,
sizeof(int), &m0, VALUE,
sizeof(int), &n0, VALUE,
sizeof(unsigned long long int), &seed, VALUE,
0);
}

Here is the call graph for this function:

Here is the caller graph for this function: