23#ifndef DOXYGEN_SHOULD_SKIP_THIS
28#include "sopalin/sopalin_data.h"
34#if defined( PASTIX_STARPU_PROFILING )
38starpu_profile_t solve_blok_cadd_profile = {
40 .name =
"solve_blok_cadd"
46void solve_blok_cadd_profile_register(
void ) __attribute__( ( constructor ) );
48solve_blok_cadd_profile_register(
void )
50 profiling_register_cl( &solve_blok_cadd_profile );
54#ifndef DOXYGEN_SHOULD_SKIP_THIS
55struct cl_solve_blok_cadd_args_s {
61static struct starpu_perfmodel starpu_solve_blok_cadd_model = {
62 .type = STARPU_HISTORY_BASED,
63 .symbol =
"solve_blok_cadd",
66#if !defined(PASTIX_STARPU_SIMULATION)
68fct_solve_blok_cadd_cpu(
void *descr[],
void *cl_arg )
73 struct cl_solve_blok_cadd_args_s *args = (
struct cl_solve_blok_cadd_args_s *)cl_arg;
75#if defined(PASTIX_DEBUG_STARPU)
76 fprintf( stderr,
"[pastix][%s] Add cblk recv = %d ok\n", __func__, args->cblk->gcblknum );
85 B += (args->cblk->lcolidx - args->fcblk->lcolidx);
87 1., A, lda, 1., B, ldb );
92CODELETS_CPU( solve_blok_cadd, 2 );
134 struct cl_solve_blok_cadd_args_s *cl_arg = NULL;
138#if defined(PASTIX_DEBUG_STARPU)
142#if defined(PASTIX_DEBUG_STARPU)
143 fprintf( stderr,
"[%2d][%s] cblk = %d, ownerid = %d, handler = %p, size = %ld\n",
144 solvmtx->clustnum, __func__, cblk->
gcblknum, cblk->
ownerid, rhsb->starpu_desc->handletab[cblknum],
150 cl_arg = malloc(
sizeof(
struct cl_solve_blok_cadd_args_s) );
151#if defined(PASTIX_STARPU_PROFILING)
152 cl_arg->profile_data.measures = solve_blok_cadd_profile.measures;
153 cl_arg->profile_data.flops = NAN;
156 cl_arg->fcblk = fcblk;
158#if defined(PASTIX_DEBUG_STARPU)
160 asprintf( &task_name,
"%s( %ld )",
161 cl_solve_blok_cadd_cpu.name,
162 (
long)(cblk - sopalin_data->solvmtx->cblktab) );
165 assert( cblk->
cblktype & CBLK_RECV );
166 assert( !(fcblk->
cblktype & (CBLK_RECV|CBLK_FANIN)) );
168 pastix_starpu_insert_task(
169 &cl_solve_blok_cadd_cpu,
170 STARPU_CL_ARGS, cl_arg,
sizeof(
struct cl_solve_blok_cadd_args_s ),
171 STARPU_EXECUTE_ON_NODE, fcblk->
ownerid,
172#
if defined(PASTIX_STARPU_PROFILING)
173 STARPU_CALLBACK_WITH_ARG_NFREE, solve_blok_cadd_callback, cl_arg,
175 STARPU_R, rhsb->starpu_desc->handletab[cblknum],
176 STARPU_RW, rhsb->starpu_desc->handletab[fcblknum],
177#
if defined(PASTIX_DEBUG_STARPU)
178 STARPU_NAME, task_name,
180#
if defined(PASTIX_STARPU_HETEROPRIO)
181 STARPU_PRIORITY, BucketSolveGEMM,
183 STARPU_PRIORITY, prio,
BEGIN_C_DECLS typedef int pastix_int_t
float _Complex pastix_complex32_t
int core_cgeadd(pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t LDA, pastix_complex32_t beta, pastix_complex32_t *B, pastix_int_t LDB)
Add two matrices together.
void starpu_stask_blok_cadd_fwd_recv(sopalin_data_t *sopalin_data, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcblk, int prio)
Insert the task to add a fanin cblk on the receiver side (The fanin is seen on this side as the RECV ...
Base structure to all codelet arguments that include the profiling data.
Main PaStiX RHS structure.
static pastix_int_t cblk_colnbr(const SolverCblk *cblk)
Compute the number of columns in a column block.
SolverCblk *restrict cblktab
Solver column block structure.
Solver column block structure.