25 #ifndef DOXYGEN_SHOULD_SKIP_THIS
30 #include "sopalin/sopalin_data.h"
36 #if defined( PASTIX_STARPU_PROFILING )
40 starpu_profile_t solve_cblk_zdiag_profile = {
42 .name =
"solve_cblk_zdiag"
48 void solve_cblk_zdiag_profile_register(
void ) __attribute__( ( constructor ) );
50 solve_cblk_zdiag_profile_register(
void )
52 profiling_register_cl( &solve_cblk_zdiag_profile );
56 #ifndef DOXYGEN_SHOULD_SKIP_THIS
57 struct cl_solve_cblk_zdiag_args_s {
62 static struct starpu_perfmodel starpu_solve_cblk_zdiag_model = {
63 .type = STARPU_HISTORY_BASED,
64 .symbol =
"solve_cblk_zdiag",
67 #if !defined(PASTIX_STARPU_SIMULATION)
69 fct_solve_cblk_zdiag_cpu(
void *descr[],
void *cl_arg )
71 struct cl_solve_cblk_zdiag_args_s *args = (
struct cl_solve_cblk_zdiag_args_s *) cl_arg;
74 pastix_complex64_t *b;
77 A = pastix_starpu_cblk_get_ptr( descr[0] );
78 b = (pastix_complex64_t *)STARPU_MATRIX_GET_PTR( descr[1] );
79 ldb = (int)STARPU_MATRIX_GET_LD( descr[1] );
80 nrhs = (int)STARPU_MATRIX_GET_NY( descr[1] );
112 struct cl_solve_cblk_zdiag_args_s *cl_arg;
113 starpu_data_handle_t handle;
116 #if defined(PASTIX_DEBUG_STARPU)
123 #if defined(PASTIX_WITH_MPI)
126 if ( cblk->
ownerid == sopalin_data->solvmtx->clustnum ) {
129 if ( starpu_mpi_cached_receive( solvmtx->starpu_desc_rhs->handletab[cblknum] ) ) {
132 if ( !need_submit ) {
141 cl_arg = malloc(
sizeof(
struct cl_solve_cblk_zdiag_args_s) );
142 #if defined(PASTIX_STARPU_PROFILING)
143 cl_arg->profile_data.measures = solve_cblk_zdiag_profile.measures;
144 cl_arg->profile_data.flops = NAN;
148 #if defined(PASTIX_DEBUG_STARPU)
149 asprintf( &task_name,
"%s( %ld )",
150 cl_solve_cblk_zdiag_cpu.name,
156 pastix_starpu_insert_task(
157 &cl_solve_cblk_zdiag_cpu,
158 STARPU_CL_ARGS, cl_arg,
sizeof(
struct cl_solve_cblk_zdiag_args_s ),
159 #
if defined(PASTIX_STARPU_PROFILING)
160 STARPU_CALLBACK_WITH_ARG_NFREE, cl_profiling_callback, cl_arg,
163 STARPU_RW, solvmtx->starpu_desc_rhs->handletab[cblknum],
164 #
if defined(PASTIX_DEBUG_STARPU)
165 STARPU_NAME, task_name,
167 #
if defined(PASTIX_STARPU_HETEROPRIO)
168 STARPU_PRIORITY, BucketSolveDiag,
BEGIN_C_DECLS typedef int pastix_int_t
void solve_cblk_zdiag(const SolverCblk *cblk, const void *dataA, int nrhs, pastix_complex64_t *b, int ldb, pastix_complex64_t *work)
Apply the diagonal solve related to one cblk to all the right hand side.
Base structure to all codelet arguments that include the profiling data.
void starpu_stask_cblk_zdiag(sopalin_data_t *sopalin_data, SolverCblk *cblk, int prio)
Submit a task to perform a diagonal solve related to one cblk to all the right hand side.
SolverCblk *restrict cblktab
Solver column block structure.
Solver column block structure.