PaStiX Handbook  6.4.0
Control parameters

Data Structures

struct  blendctrl_s
 The type and structure definitions. More...
 

Typedefs

typedef struct blendctrl_s BlendCtrl
 The type and structure definitions.
 

Functions

int blendCtrlInit (pastix_data_t *pastix_data, BlendCtrl *ctrl)
 Initialize the Blend control structure. More...
 
void blendCtrlExit (BlendCtrl *ctrl)
 Finalize the Blend control structure. More...
 
void getCommunicationCosts (const BlendCtrl *ctrl, pastix_int_t clustsrc, pastix_int_t clustdst, pastix_int_t sync_comm_nbr, double *startup, double *bandwidth)
 Return the communication cost between two cores. More...
 

Detailed Description

This module handles all option to parameterize the final analyze step that performs proportional mapping and the generation of the final solver matrix structure per MPI process.


Data Type Documentation

◆ blendctrl_s

struct blendctrl_s

The type and structure definitions.

Definition at line 28 of file blendctrl.h.

Data Fields
pastix_int_t count_ops

Print costs in term of number of elementary operations

pastix_int_t debug

Make additional checks after each step

pastix_int_t timer

Print execution times

pastix_int_t ooc

Enable the out-of-core version of Pastix (Option unused for now)

pastix_int_t ricar

Enable the ILU(k) dedicated steps

pastix_int_t leader

Leader for sequential tasks

pastix_int_t allcand

All processors are candidate for each cblk

pastix_int_t nocrossproc

Forbid a processor to be candidate in two different branches shared with different partners

pastix_int_t costlevel

Enable/disable computation and use of subtree cost

pastix_int_t blcolmin

Minimun number of columns for a good use of BLAS primitives

pastix_int_t blcolmax

Maximum number of columns for a good use of BLAS primitives

pastix_int_t abs

Adaptative block size:

  • 0, all block are cut to blcolmin
  • >0, try to make (ncand*abs) cblk
pastix_int_t up_after_split

Update the costmtx and candtab arrays after splitting the symbol

pastix_int_t level_tasks2d

Level to shift from 1D to 2D. Automaticaly computed if < 0, only 1D if 0

pastix_int_t width_tasks2d

Minimal width to consider a cblk 2D if autolevel (level_tasks2d < 0)

pastix_int_t clustnum

Id of current MPI process

pastix_int_t clustnbr

Number of MPI processes

pastix_int_t total_nbcores

Total number of physical cores used for the simulation

pastix_int_t total_nbthrds

Total number of threads used for the simulation

pastix_int_t local_nbcores

Local number of physical cores used by the current MPI process

pastix_int_t local_nbthrds

Local number of threads used by the current MPI process

pastix_int_t local_nbctxts

Local number of contexts (used for dynamic scheduler and runtimes)

pastix_int_t * clust2smp

clust2smp[i] = SMP node on which i_th MPI process is running, if multiple MPI processes per node

pastix_int_t * core2clust

core2clust[i] = cluster owning the core i

pastix_int_t * iparm

In/Out Integer parameters

double * dparm

In/Out Float parameters

const char * dirname

Temporary unique directory to store output files (Initialized to pastix_data->dir_local)

EliminTree * etree

the elimination tree

CostMatrix * costmtx

the cost bounded to each cblk and blok

Cand * candtab

processor candidate tab

FILE * tracefile

File holding the simulated trace

Function Documentation

◆ blendCtrlInit()

int blendCtrlInit ( pastix_data_t pastix_data,
BlendCtrl ctrl 
)

Initialize the Blend control structure.

Parameters
[in,out]pastix_dataThe pastix_data structure of the problem instance. Integer parameters that are used to build the Blend control structure. IPARM_TASKS2D_LEVEL, IPARM_TASKS2D_WIDTH, IPARM_COMPRESS_WHEN, IPARM_COMPRESS_MIN_WIDTH, IPARM_INCOMPLETE, IPARM_MAX_BLOCKSIZE, IPARM_MIN_BLOCKSIZE, IPARM_THREAD_NBR, and IPARM_VERBOSE are used in this function.
[in,out]ctrlThe Blend control data structure to initialize.
Return values
PASTIX_SUCCESSon successful exit
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 162 of file blendctrl.c.

References blendctrl_s::allcand, blendctrl_s::blcolmax, blendctrl_s::blcolmin, blendctrl_s::candtab, blendctrl_s::clust2smp, blendctrl_s::clustnbr, blendctrl_s::clustnum, blendctrl_s::core2clust, blendctrl_s::costlevel, blendctrl_s::costmtx, blendctrl_s::count_ops, blendctrl_s::debug, pastix_data_s::dir_local, blendctrl_s::dirname, blendctrl_s::dparm, pastix_data_s::dparm, blendctrl_s::etree, pastix_data_s::inter_node_procnbr, pastix_data_s::inter_node_procnum, blendctrl_s::iparm, pastix_data_s::iparm, IPARM_ALLCAND, IPARM_INCOMPLETE, IPARM_MAX_BLOCKSIZE, IPARM_MIN_BLOCKSIZE, IPARM_TASKS2D_LEVEL, IPARM_TASKS2D_WIDTH, IPARM_THREAD_NBR, IPARM_VERBOSE, blendctrl_s::leader, blendctrl_s::level_tasks2d, blendctrl_s::local_nbcores, blendctrl_s::local_nbctxts, blendctrl_s::local_nbthrds, blendctrl_s::nocrossproc, PASTIX_ERR_BADPARAMETER, pastix_gendirectories(), pastix_int_t, PASTIX_SUCCESS, blendctrl_s::ricar, blendctrl_s::timer, blendctrl_s::total_nbcores, blendctrl_s::total_nbthrds, blendctrl_s::up_after_split, and blendctrl_s::width_tasks2d.

Referenced by pastix_subtask_blend().

◆ blendCtrlExit()

void blendCtrlExit ( BlendCtrl ctrl)

Finalize the Blend control structure.

Parameters
[in,out]ctrlThe Blend control data structure to free.

Definition at line 303 of file blendctrl.c.

References candExit(), blendctrl_s::candtab, blendctrl_s::clust2smp, and blendctrl_s::core2clust.

Referenced by pastix_subtask_blend().

◆ getCommunicationCosts()

void getCommunicationCosts ( const BlendCtrl ctrl,
pastix_int_t  clustsrc,
pastix_int_t  clustdst,
pastix_int_t  sync_comm_nbr,
double *  startup,
double *  bandwidth 
)

Return the communication cost between two cores.

Parameters
[in]ctrlThe Blend control data structure that holds the cluster architecture
[in]clustsrcThe source cluster of the communication
[in]clustdstThe remote cluster of the communication
[in]sync_comm_nbrThe number of simultaneous communication between clustsrc and clustdst
[out]startupOn exit, holds the startup/latency cost of the communication between the two nodes.
[out]bandwidthOn exit, holds the bandwidth of the communication between the two nodes.

Definition at line 60 of file blendctrl.c.

References blendctrl_s::clust2smp.

Referenced by simu_computeFtgtCosts().