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

Go to the source code of this file.

Macros

#define A(m, n)   BLKADDR(A, PLASMA_Complex32_t, m, n)

Functions

void plasma_pcbarrier_tl2pnl_quark (PLASMA_desc A, PLASMA_sequence *sequence, PLASMA_request *request)
void plasma_pcbarrier_pnl2tl_quark (PLASMA_desc A, PLASMA_sequence *sequence, PLASMA_request *request)
void plasma_pcbarrier_tl2row_quark (PLASMA_desc A, PLASMA_sequence *sequence, PLASMA_request *request)
void plasma_pcbarrier_row2tl_quark (PLASMA_desc A, PLASMA_sequence *sequence, PLASMA_request *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

Barrier for algorithm mixing computation on tile/panel.

Version:
2.4.5
Author:
Mathieu Faverge
Date:
2009-11-15

c Tue Nov 22 14:35:43 2011

Definition in file pcbarrier.c.


Macro Definition Documentation

#define A (   m,
 
)    BLKADDR(A, PLASMA_Complex32_t, m, n)

Definition at line 20 of file pcbarrier.c.


Function Documentation

void plasma_pcbarrier_pnl2tl_quark ( PLASMA_desc  A,
PLASMA_sequence sequence,
PLASMA_request request 
)

Barrier from panels to tiles

Definition at line 61 of file pcbarrier.c.

References CORE_foo2_quark(), CORE_foo_quark(), INOUT, INPUT, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::nb, plasma_desc_t::nt, plasma_context_self(), PLASMA_SUCCESS, plasma_context_struct::quark, QUARK_Insert_Task(), plasma_sequence_t::quark_sequence, QUARK_Task_Flag_Set(), Quark_Task_Flags_Initializer, plasma_sequence_t::status, and TASK_SEQUENCE.

{
int m, n;
plasma = plasma_context_self();
if (sequence->status != PLASMA_SUCCESS)
return;
QUARK_Task_Flag_Set(&task_flags, TASK_SEQUENCE, (intptr_t)sequence->quark_sequence);
for (n = 0; n < A.nt; n++)
{
/* Protection from previous GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(0, n), INOUT,
0);
for (m = 0; m < A.mt; m++)
{
QUARK_Insert_Task(plasma->quark, CORE_foo2_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(0, n), INPUT,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, n), INOUT,
0);
}
}
}

Here is the call graph for this function:

void plasma_pcbarrier_row2tl_quark ( PLASMA_desc  A,
PLASMA_sequence sequence,
PLASMA_request request 
)

Barrier from panels to tiles

Definition at line 128 of file pcbarrier.c.

References CORE_foo2_quark(), CORE_foo_quark(), INOUT, INPUT, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::nb, plasma_desc_t::nt, plasma_context_self(), PLASMA_SUCCESS, plasma_context_struct::quark, QUARK_Insert_Task(), plasma_sequence_t::quark_sequence, QUARK_Task_Flag_Set(), Quark_Task_Flags_Initializer, plasma_sequence_t::status, and TASK_SEQUENCE.

{
int m, n;
plasma = plasma_context_self();
if (sequence->status != PLASMA_SUCCESS)
return;
QUARK_Task_Flag_Set(&task_flags, TASK_SEQUENCE, (intptr_t)sequence->quark_sequence);
for (m = 0; m < A.mt; m++)
{
/* Protection from previous GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, 0), INOUT,
0);
for (n = 0; n < A.nt; n++)
{
QUARK_Insert_Task(plasma->quark, CORE_foo2_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, 0), INPUT,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, n), INOUT,
0);
}
}
}

Here is the call graph for this function:

void plasma_pcbarrier_tl2pnl_quark ( PLASMA_desc  A,
PLASMA_sequence sequence,
PLASMA_request request 
)

Barrier from tiles to panels

Definition at line 25 of file pcbarrier.c.

References CORE_foo2_quark(), CORE_foo_quark(), GATHERV, INOUT, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::nb, plasma_desc_t::nt, plasma_context_self(), PLASMA_SUCCESS, plasma_context_struct::quark, QUARK_Insert_Task(), plasma_sequence_t::quark_sequence, QUARK_Task_Flag_Set(), Quark_Task_Flags_Initializer, plasma_sequence_t::status, and TASK_SEQUENCE.

{
int m, n;
plasma = plasma_context_self();
if (sequence->status != PLASMA_SUCCESS)
return;
QUARK_Task_Flag_Set(&task_flags, TASK_SEQUENCE, (intptr_t)sequence->quark_sequence);
for (n = 0; n < A.nt; n++)
{
/* Protection from previous GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(0, n), INOUT,
0);
for (m = 0; m < A.mt; m++)
{
QUARK_Insert_Task(plasma->quark, CORE_foo2_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(0, n), INOUT | GATHERV,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, n), INOUT,
0);
}
/* Protection to next GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(0, n), INOUT,
0);
}
}

Here is the call graph for this function:

void plasma_pcbarrier_tl2row_quark ( PLASMA_desc  A,
PLASMA_sequence sequence,
PLASMA_request request 
)

Barrier from tiles to panels

Definition at line 92 of file pcbarrier.c.

References CORE_foo2_quark(), CORE_foo_quark(), GATHERV, INOUT, plasma_desc_t::mb, plasma_desc_t::mt, plasma_desc_t::nb, plasma_desc_t::nt, plasma_context_self(), PLASMA_SUCCESS, plasma_context_struct::quark, QUARK_Insert_Task(), plasma_sequence_t::quark_sequence, QUARK_Task_Flag_Set(), Quark_Task_Flags_Initializer, plasma_sequence_t::status, and TASK_SEQUENCE.

{
int m, n;
plasma = plasma_context_self();
if (sequence->status != PLASMA_SUCCESS)
return;
QUARK_Task_Flag_Set(&task_flags, TASK_SEQUENCE, (intptr_t)sequence->quark_sequence);
for (m = 0; m < A.mt; m++)
{
/* Protection from previous GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, 0), INOUT,
0);
for (n = 0; n < A.nt; n++)
{
QUARK_Insert_Task(plasma->quark, CORE_foo2_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, 0), INOUT | GATHERV,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, n), INOUT,
0);
}
/* Protection to next GATHERV */
QUARK_Insert_Task(plasma->quark, CORE_foo_quark, &task_flags,
sizeof(PLASMA_Complex32_t)*A.mb*A.nb, A(m, 0), INOUT,
0);
}
}

Here is the call graph for this function: