MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
pztrsmpl.c File Reference
#include "common.h"
Include dependency graph for pztrsmpl.c:

Go to the source code of this file.

Macros

#define A(m, n)   dA, m, n
#define B(m, n)   dB, m, n
#define L(m, n)   dL, m, n
#define IPIV(m, n)   &(IPIV[(int64_t)A.nb*((int64_t)(m)+(int64_t)A.mt*(int64_t)(n))])

Functions

void magma_pztrsmpl (magma_desc_t *dA, magma_desc_t *dB, magma_desc_t *dL, int *IPIV, magma_sequence_t *sequence, magma_request_t *request)

Detailed Description

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

Version:
2.3.1
Author:
Jakub Kurzak
Hatem Ltaief
Mathieu Faverge
Date:
2010-11-15 normal z -> s d c

Definition in file pztrsmpl.c.


Macro Definition Documentation

#define A (   m,
 
)    dA, m, n

Definition at line 19 of file pztrsmpl.c.

#define B (   m,
 
)    dB, m, n

Definition at line 20 of file pztrsmpl.c.

#define IPIV (   m,
 
)    &(IPIV[(int64_t)A.nb*((int64_t)(m)+(int64_t)A.mt*(int64_t)(n))])

Definition at line 23 of file pztrsmpl.c.

#define L (   m,
 
)    dL, m, n

Definition at line 21 of file pztrsmpl.c.


Function Documentation

void magma_pztrsmpl ( magma_desc_t dA,
magma_desc_t dB,
magma_desc_t dL,
int *  IPIV,
magma_sequence_t sequence,
magma_request_t request 
)

Parallel forward substitution for tile LU - dynamic scheduling

Definition at line 28 of file pztrsmpl.c.

References A, B, magma_desc_s::desc, IPIV, L, magma_context_self(), MAGMA_IB, MAGMA_SUCCESS, min, morse_options_finalize(), morse_options_init(), MORSE_zgessm(), MORSE_zssssm(), MorseOption_s::nb, and magma_sequence_s::status.

{
MorseOption_t options;
PLASMA_desc A = dA->desc;
PLASMA_desc B = dB->desc;
int k, m, n;
int tempkm, tempnn, tempkmin, tempmm, tempkn;
int ib;
int maxk = min(A.mt, A.nt);
magma = magma_context_self();
if (sequence->status != MAGMA_SUCCESS)
return;
morse_options_init( &options, magma, sequence, request );
ib = MAGMA_IB;
for (k = 0; k < maxk; k++) {
tempkm = k == A.mt-1 ? A.m-k*A.mb : A.mb;
tempkn = k == A.nt-1 ? A.n-k*A.nb : A.nb;
tempkmin = k == maxk-1 ? min(A.m, A.n)-k*A.mb : A.mb;
for (n = 0; n < B.nt; n++) {
tempnn = n == B.nt-1 ? B.n-n*B.nb : B.nb;
&options,
tempkm, tempnn, tempkmin, ib,
IPIV(k, k),
L(k, k),
A(k, k),
B(k, n));
}
for (m = k+1; m < A.mt; m++) {
tempmm = m == A.mt-1 ? A.m-m*A.mb : A.mb;
for (n = 0; n < B.nt; n++) {
tempnn = n == B.nt-1 ? B.n-n*B.nb : B.nb;
&options,
A.nb, tempnn, tempmm, tempnn, tempkn, ib,
B(k, n),
B(m, n),
L(m, k),
A(m, k),
IPIV(m, k));
}
}
}
morse_options_finalize( &options, magma );
}

Here is the call graph for this function:

Here is the caller graph for this function: