MIDAPACK - MIcrowave Data Analysis PACKage
1.1b
Parallel software tools for high performance CMB DA analysis
|
Functions | |
int | m2m (double *vA1, int *A1, int n1, double *vA2, int *A2, int n2) |
int | m2m_sum (double *vA1, int *A1, int n1, double *vA2, int *A2, int n2) |
int | card_or (int *A1, int n1, int *A2, int n2) |
int | card_and (int *A1, int n1, int *A2, int n2) |
int | set_or (int *A1, int n1, int *A2, int n2, int *A1orA2) |
int | set_and (int *A1, int n1, int *A2, int n2, int *A1andA2) |
int | butterfly_init (int *indices, int count, int **R, int *nR, int **S, int *nS, int **com_indices, int *com_count, int steps, MPI_Comm comm) |
Initialize tables for butterfly-like communication scheme This routine set up needed tables for the butterfly communication scheme. Sending and receiving tabs should be well allocated(at least size of number of steps in butterfly scheme). Double pointer are partially allocated, the last allocation is performed inside the routine. com_indices and com_count are also allocated inside the routine, thus they are passing by reference. They represent indices which have to be communicated an their number. Algotithm is based 2 parts. The first one identify intersection between processors indices, using 3 successives butterfly communication schemes : bottom up, top down, and top down again. The second part works locally to build sets of indices to communicate. | |
int | butterfly_reduce (int **R, int *nR, int nRmax, int **S, int *nS, int nSmax, double *val, int steps, MPI_Comm comm) |
Perform a sparse sum reduction (or mapped reduction) using a butterfly-like communication scheme. | |
double | truebutterfly_reduce (int **R, int *nR, int nRmax, int **S, int *nS, int nSmax, double *val, int steps, MPI_Comm comm) |
Perform a sparse sum reduction (or mapped reduction) using a butterfly-like communication scheme. | |
int | sindex (int *T, int nT, int *A, int nA) |
int | omp_pindex (int *T, int nT, int *A, int nA) |
int | ssort (int *indices, int count, int flag) |
int | omp_psort (int *A, int nA, int flag) |
int | ring_init (int *indices, int count, int **R, int *nR, int **S, int *nS, int steps, MPI_Comm comm) |
Initialize tables for ring-like communication scheme. | |
int | ring_reduce (int **R, int *nR, int nRmax, int **S, int *nS, int nSmax, double *val, double *res_val, int steps, MPI_Comm comm) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like communication scheme. | |
int | ring_nonblocking_reduce (int **R, int *nR, int **S, int *nS, double *val, double *res_val, int steps, MPI_Comm comm) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like non-blocking communication scheme. | |
int | ring_noempty_reduce (int **R, int *nR, int nneR, int **S, int *nS, int nneS, double *val, double *res_val, int steps, MPI_Comm comm) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like non-blocking no-empty communication scheme. | |
int | truebutterfly_init (int *indices, int count, int **R, int *nR, int **S, int *nS, int **com_indices, int *com_count, int steps, MPI_Comm comm) |
Initialize tables for butterfly-like communication scheme (true means pair wise) This routine set up needed tables for the butterfly communication scheme. Sending and receiving tabs should be well allocated(at least size of number of steps in butterfly scheme). Double pointer are partially allocated, the last allocation is performed inside the routine. com_indices and com_count are also allocated inside the routine, thus they are passing by reference. They represent indices which have to be communicated an their number. Algotithm is based 2 parts. The first one identify intersection between processors indices, using 3 successives butterfly communication schemes : bottom up, top down, and top down again. The second part works locally to build sets of indices to communicate. |
These are low level internal routines. These are generally not to be used by external users.
int m2m | ( | double * | vA1, |
int * | A1, | ||
int | n1, | ||
double * | vA2, | ||
int * | A2, | ||
int | n2 | ||
) |
int m2m_sum | ( | double * | vA1, |
int * | A1, | ||
int | n1, | ||
double * | vA2, | ||
int * | A2, | ||
int | n2 | ||
) |
int card_or | ( | int * | A1, |
int | n1, | ||
int * | A2, | ||
int | n2 | ||
) |
int card_and | ( | int * | A1, |
int | n1, | ||
int * | A2, | ||
int | n2 | ||
) |
int set_or | ( | int * | A1, |
int | n1, | ||
int * | A2, | ||
int | n2, | ||
int * | A1orA2 | ||
) |
Compute A1 and A2 should be two ascending ordered sets. It requires the sizes of these two sets, n1 and n2. A1andA2 has to be previouly allocated.
n1 | number of elemnets in A1 |
A1 | set of indices |
n2 | number of elemnets in A2 |
A2 | set of indices |
address | to the set A1orA2 |
int set_and | ( | int * | A1, |
int | n1, | ||
int * | A2, | ||
int | n2, | ||
int * | A1andA2 | ||
) |
Compute A1 and A2 should be two monotony sets in ascending order. It requires the sizes of these two sets, n1 and n2. A1andA2 has to be previously allocated.
n1 | number of elemnets in A1 |
A1 | set of indices |
n2 | number of elemnets in A2 |
A2 | set of indices |
address | to the set A1andA2 |
int butterfly_init | ( | int * | indices, |
int | count, | ||
int ** | R, | ||
int * | nR, | ||
int ** | S, | ||
int * | nS, | ||
int ** | com_indices, | ||
int * | com_count, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Initialize tables for butterfly-like communication scheme This routine set up needed tables for the butterfly communication scheme. Sending and receiving tabs should be well allocated(at least size of number of steps in butterfly scheme). Double pointer are partially allocated, the last allocation is performed inside the routine. com_indices and com_count are also allocated inside the routine, thus they are passing by reference. They represent indices which have to be communicated an their number. Algotithm is based 2 parts. The first one identify intersection between processors indices, using 3 successives butterfly communication schemes : bottom up, top down, and top down again. The second part works locally to build sets of indices to communicate.
indices | set of indices(monotony) handle by a process. |
count | number of elements |
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
com_indices | set of indices(monotony) communicated by a process |
com_count | number of elements |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
Definition at line 37 of file butterfly.c.
double butterfly_reduce | ( | int ** | R, |
int * | nR, | ||
int | nRmax, | ||
int ** | S, | ||
int * | nS, | ||
int | nSmax, | ||
double * | val, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Perform a sparse sum reduction (or mapped reduction) using a butterfly-like communication scheme.
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
nRmax | maximum size of received message |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
nSmax | maximum size of sent message |
val | set of values (typically values associated to communicated indices) |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
Definition at line 209 of file butterfly.c.
int truebutterfly_reduce | ( | int ** | R, |
int * | nR, | ||
int | nRmax, | ||
int ** | S, | ||
int * | nS, | ||
int | nSmax, | ||
double * | val, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Perform a sparse sum reduction (or mapped reduction) using a butterfly-like communication scheme.
Perform a sparse sum reduction (or mapped reduction) using a butterfly-like communication scheme (true means pairwise)
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
nRmax | maximum size of received message |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
nSmax | maximum size of sent message |
val | set of values (typically values associated to communicated indices) |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
Definition at line 430 of file butterfly_extra.c.
int sindex | ( | int * | T, |
int | nT, | ||
int * | A, | ||
int | nA | ||
) |
int omp_pindex | ( | int * | T, |
int | nT, | ||
int * | A, | ||
int | nA | ||
) |
int ssort | ( | int * | indices, |
int | count, | ||
int | flag | ||
) |
Sort and merge redundant elements of a set of indices using a specified method. The indices tab, initially an arbitrary set of integers, becomes a monotony set. Available methods :
indices | tab (modified) |
count | number of indices |
flag | method |
int omp_psort | ( | int * | A, |
int | nA, | ||
int | flag | ||
) |
Sort and merge redundant elements of a set of indices, using openMP. The indices tab, initially an arbitrary set of integers, becomes a monotony set. Algorithm is diivided in two steps :
Available methods for the fully parallel step :
indices | tab (modified) |
count | number of elements to sort |
int ring_init | ( | int * | indices, |
int | count, | ||
int ** | R, | ||
int * | nR, | ||
int ** | S, | ||
int * | nS, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Initialize tables for ring-like communication scheme.
This routine set up needed tables for the ring communication scheme. Sending and receiving tabs should be well allocated(at least size of number of steps in ring scheme). Double pointer are partially allocated, the last allocation is performed inside the routine (only for R S are just pointer).
indices | set of indices(monotony) handle by a process. |
count | number of elements |
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
com_indices | set of indices(monotony) communicated by a process |
com_count | number of elements |
steps | number of communication exchange in the ring scheme |
comm | MPI communicator |
int ring_reduce | ( | int ** | R, |
int * | nR, | ||
int | nRmax, | ||
int ** | S, | ||
int * | nS, | ||
int | nSmax, | ||
double * | val, | ||
double * | res_val, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like communication scheme.
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
nRmax | maximum size of received message |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
nSmax | maximum size of sent message |
val | set of values (typically values associated to communicated indices) |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
int ring_nonblocking_reduce | ( | int ** | R, |
int * | nR, | ||
int ** | S, | ||
int * | nS, | ||
double * | val, | ||
double * | res_val, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like non-blocking communication scheme.
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
val | set of values (typically values associated to communicated indices) |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
int ring_noempty_reduce | ( | int ** | R, |
int * | nR, | ||
int | nneR, | ||
int ** | S, | ||
int * | nS, | ||
int | nneS, | ||
double * | val, | ||
double * | res_val, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Perform a sparse sum reduction (or mapped reduction) using a ring-like non-blocking no-empty communication scheme.
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
nneR | number of no-empty receiving messages |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
nneS | number of no-empty sending messages |
val | set of values (typically values associated to communicated indices) |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
int truebutterfly_init | ( | int * | indices, |
int | count, | ||
int ** | R, | ||
int * | nR, | ||
int ** | S, | ||
int * | nS, | ||
int ** | com_indices, | ||
int * | com_count, | ||
int | steps, | ||
MPI_Comm | comm | ||
) |
Initialize tables for butterfly-like communication scheme (true means pair wise) This routine set up needed tables for the butterfly communication scheme. Sending and receiving tabs should be well allocated(at least size of number of steps in butterfly scheme). Double pointer are partially allocated, the last allocation is performed inside the routine. com_indices and com_count are also allocated inside the routine, thus they are passing by reference. They represent indices which have to be communicated an their number. Algotithm is based 2 parts. The first one identify intersection between processors indices, using 3 successives butterfly communication schemes : bottom up, top down, and top down again. The second part works locally to build sets of indices to communicate.
indices | set of indices(monotony) handle by a process. |
count | number of elements |
R | pointer to receiving maps |
nR | array of number of elements in each receiving map |
S | pointer to sending maps |
nS | array of number of elements in each sending map |
com_indices | set of indices(monotony) communicated by a process |
com_count | number of elements |
steps | number of communication exchange in the butterfly scheme |
comm | MPI communicator |
Definition at line 37 of file truebutterfly.c.