ezp
|
Standalone pgbsv
solver.
More...
const auto & | comm_world {mpl::environment::comm_world()} |
const auto & | parent = mpl::inter_communicator::parent() |
template<ezp::data_t DT, ezp::index_t IT> | |
int | run (const int N, const int KL, const int KU, const int NRHS) |
int | main (int, char **) |
Standalone pgbsv
solver.
This program is a standalone application that solves a system of linear equations using the pgbsv
solver.
The caller spawns this program as a worker process.
The caller must send three buffers to the worker process:
N
), number of sub-diagonals (KL
), number of super-diagonals (KU
), number of right-hand sides (NRHS
), and the data type,A
, size N x (KL + KU + 1)
,B
, size N x NRHS
.The data type has the following meaning:
pgbsv
solver requires the lead dimension of A
to be 2 * (KL + KU) + 1
. The top KL + KU
rows do not contain any data. The bottom KL + KU + 1
rows contain the matrix A
. KL + KU + 1
rows of A
only. This is to avoid sending unnecessary data and optimize the communication.The error code (0 for success) will be sent back to the root process of the caller. If error code is 0, the solution will be sent back as well.
The example caller logic can be seen as follows.