PLASMA auxiliary routines PLASMA is a software package provided by Univ. of Tennessee, Univ. of California Berkeley and Univ. of Colorado Denver
- Version:
- 2.4.5
- Author:
- Emmanuel Agullo
-
Mathieu Faverge
- Date:
- 2010-11-15 d Tue Nov 22 14:35:39 2011
Definition in file pdsymm.c.
Parallel tile symmetric matrix-matrix multiplication - static scheduling
Definition at line 24 of file pdsymm.c.
References A, B, BLKLDD, C, CORE_dgemm(), CORE_dsymm(), plasma_desc_t::m, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::n, plasma_desc_t::nb, plasma_desc_t::nt, PLASMA_RANK, PLASMA_SIZE, PLASMA_SUCCESS, plasma_unpack_args_9, PlasmaLeft, PlasmaLower, PlasmaNoTrans, PlasmaTrans, side, plasma_sequence_t::status, and uplo.
{
double alpha;
double beta;
int k, m, n;
int next_m;
int next_n;
int lda, ldak, ldb, ldc;
int tempmm, tempnn, tempkn, tempkm;
double zbeta;
double zone = (double)1.0;
return;
n = 0;
while (m >= C.
mt && n < C.
nt) {
n++;
}
next_m = m;
next_n = n;
while (next_m >= C.
mt && next_n < C.
nt) {
next_n++;
}
tempmm = m == C.
mt-1 ? C.
m-m*C.
mb : C.
mb;
tempnn = n == C.
nt-1 ? C.
n-n*C.
nb : C.
nb;
for (k = 0; k < C.
mt; k++) {
tempkm = k == C.
mt-1 ? C.
m-k*C.
mb : C.
mb;
zbeta = k == 0 ? beta : zone;
if (k < m) {
tempmm, tempnn, tempkm,
}
else {
if (k == m) {
side, uplo,
tempmm, tempnn,
}
else {
tempmm, tempnn, tempkm,
}
}
}
}
else {
for (k = 0; k < C.
mt; k++) {
tempkm = k == C.
mt-1 ? C.
m-k*C.
mb : C.
mb;
zbeta = k == 0 ? beta : zone;
if (k < m) {
tempmm, tempnn, tempkm,
}
else {
if (k == m) {
side, uplo,
tempmm, tempnn,
}
else {
tempmm, tempnn, tempkm,
}
}
}
}
}
else {
for (k = 0; k < C.
nt; k++) {
tempkn = k == C.
nt-1 ? C.
n-k*C.
nb : C.
nb;
zbeta = k == 0 ? beta : zone;
if (k < n) {
tempmm, tempnn, tempkn,
}
else {
if (n == k) {
side, uplo,
tempmm, tempnn,
}
else {
tempmm, tempnn, tempkn,
}
}
}
}
else {
for (k = 0; k < C.
nt; k++) {
tempkn = k == C.
nt-1 ? C.
n-k*C.
nb : C.
nb;
zbeta = k == 0 ? beta : zone;
if (k < n) {
tempmm, tempnn, tempkn,
}
else {
if (n == k) {
side, uplo,
tempmm, tempnn,
}
else {
tempmm, tempnn, tempkn,
}
}
}
}
}
m = next_m;
n = next_n;
}
}
Parallel tile symmetric matrix-matrix multiplication - dynamic scheduling
Definition at line 231 of file pdsymm.c.
References A, B, BLKLDD, C, plasma_desc_t::m, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::n, plasma_desc_t::nb, plasma_desc_t::nt, plasma_context_self(), PLASMA_SUCCESS, PlasmaLeft, PlasmaLower, PlasmaNoTrans, PlasmaTrans, plasma_context_struct::quark, QUARK_CORE_dgemm(), QUARK_CORE_dsymm(), plasma_sequence_t::quark_sequence, QUARK_Task_Flag_Set(), Quark_Task_Flags_Initializer, plasma_sequence_t::status, and TASK_SEQUENCE.
{
int k, m, n;
int lda, ldak, ldb, ldc;
int tempmm, tempnn, tempkn, tempkm;
double zbeta;
double zone = (double)1.0;
return;
for (m = 0; m < C.
mt; m++) {
tempmm = m == C.
mt-1 ? C.
m-m*C.
mb : C.
mb;
for (n = 0; n < C.
nt; n++) {
tempnn = n == C.
nt-1 ? C.
n-n*C.
nb : C.
nb;
for (k = 0; k < C.
mt; k++) {
tempkm = k == C.
mt-1 ? C.
m-k*C.
mb : C.
mb;
zbeta = k == 0 ? beta : zone;
if (k < m) {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkm, A.
mb,
alpha, A(m, k), lda,
}
else {
if (k == m) {
plasma->
quark, &task_flags,
alpha, A(k, k), ldak,
}
else {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkm, A.
mb,
alpha, A(k, m), ldak,
}
}
}
}
else {
for (k = 0; k < C.
mt; k++) {
tempkm = k == C.
mt-1 ? C.
m-k*C.
mb : C.
mb;
zbeta = k == 0 ? beta : zone;
if (k < m) {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkm, A.
mb,
alpha, A(k, m), ldak,
}
else {
if (k == m) {
plasma->
quark, &task_flags,
alpha, A(k, k), ldak,
}
else {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkm, A.
mb,
alpha, A(m, k), lda,
}
}
}
}
}
else {
for (k = 0; k < C.
nt; k++) {
tempkn = k == C.
nt-1 ? C.
n-k*C.
nb : C.
nb;
zbeta = k == 0 ? beta : zone;
if (k < n) {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkn, A.
mb,
alpha, B(m, k), ldb,
}
else {
if (k == n) {
plasma->
quark, &task_flags,
alpha, A(k, k), ldak,
}
else {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkn, A.
mb,
alpha, B(m, k), ldb,
}
}
}
}
else {
for (k = 0; k < C.
nt; k++) {
tempkn = k == C.
nt-1 ? C.
n-k*C.
nb : C.
nb;
zbeta = k == 0 ? beta : zone;
if (k < n) {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkn, A.
mb,
alpha, B(m, k), ldb,
}
else {
if (k == n) {
plasma->
quark, &task_flags,
alpha, A(k, k), ldak,
}
else {
plasma->
quark, &task_flags,
tempmm, tempnn, tempkn, A.
mb,
alpha, B(m, k), ldb,
}
}
}
}
}
}
}
}