|
SuperLU Distributed 9.0.0
gpu3d
|
#include "superlu_ddefs.h"
Go to the source code of this file.
Functions | |
| float | pddistribute3d (superlu_dist_options_t *options, int_t n, SuperMatrix *A, dScalePermstruct_t *ScalePermstruct, Glu_freeable_t *Glu_freeable, dLUstruct_t *LUstruct, gridinfo3d_t *grid3d) |
| int_t | dReDistribute_A3d (SuperMatrix *A, dScalePermstruct_t *ScalePermstruct, Glu_freeable_t *Glu_freeable, int_t *xsup, int_t *supno, gridinfo3d_t *grid3d, int_t *colptr[], int_t *rowind[], double *a[]) |
| void | dpropagate_A_to_LU3d (dLUstruct_t *LUstruct, int_t *xa, int_t *asub, double *a, superlu_dist_options_t *options, gridinfo3d_t *grid3d, int_t nsupers, float *mem_use) |
| int_t | ComputeLDAspa_Ilsum (int_t nsupers, int_t *ilsum, gridinfo3d_t *grid3d) |
| void | propagateDataThroughMatrixBlocks (int_t nsupers, Glu_freeable_t *Glu_freeable, dLUstruct_t *LUstruct, gridinfo3d_t *grid3d, int_t *Urb_length, int_t *rb_marker, int_t *Urb_fstnz, int_t *Ucbs, int **ToSendR, int *ToSendD, int *ToRecv) |
| int_t | checkDist3DLUStruct (dLUstruct_t *LUstruct, gridinfo3d_t *grid3d) |
| void | dbcastPermutedSparseA (SuperMatrix *A, dScalePermstruct_t *ScalePermstruct, Glu_freeable_t *Glu_freeable, dLUstruct_t *LUstruct, gridinfo3d_t *grid3d) |
| void | dnewTrfPartitionInit (int_t nsupers, dLUstruct_t *LUstruct, gridinfo3d_t *grid3d) |
| int | compareInt_t (void *a, void *b) |
| Compares two integers for equality. More... | |
| int | compareInt (void *a, void *b) |
| Compares two integers for equality. More... | |
| int | compareDouble (void *a, void *b) |
| Compares two doubles for equality. More... | |
| int | dist_checkArrayEq (void *arr, int length, MPI_Datatype datatype, int src_rank, int dest_rank, MPI_Comm communicator, int(*compare)(void *, void *)) |
| Checks whether arrays at two MPI ranks are identical. More... | |
| int_t checkDist3DLUStruct | ( | dLUstruct_t * | LUstruct, |
| gridinfo3d_t * | grid3d | ||
| ) |

| int compareDouble | ( | void * | a, |
| void * | b | ||
| ) |
Compares two doubles for equality.
| a | Void pointer to the first double |
| b | Void pointer to the second double |

| int compareInt | ( | void * | a, |
| void * | b | ||
| ) |
Compares two integers for equality.
| a | Void pointer to the first integer |
| b | Void pointer to the second integer |
| int compareInt_t | ( | void * | a, |
| void * | b | ||
| ) |
Compares two integers for equality.
| a | Void pointer to the first integer |
| b | Void pointer to the second integer |

| int_t ComputeLDAspa_Ilsum | ( | int_t | nsupers, |
| int_t * | ilsum, | ||
| gridinfo3d_t * | grid3d | ||
| ) |
| void dbcastPermutedSparseA | ( | SuperMatrix * | A, |
| dScalePermstruct_t * | ScalePermstruct, | ||
| Glu_freeable_t * | Glu_freeable, | ||
| dLUstruct_t * | LUstruct, | ||
| gridinfo3d_t * | grid3d | ||
| ) |


| int dist_checkArrayEq | ( | void * | arr, |
| int | length, | ||
| MPI_Datatype | datatype, | ||
| int | src_rank, | ||
| int | dest_rank, | ||
| MPI_Comm | communicator, | ||
| int(*)(void *, void *) | compare | ||
| ) |
Checks whether arrays at two MPI ranks are identical.
This function is used to check if a copy of an array at two different MPI ranks are the same. It uses MPI_Send and MPI_Recv to transfer data between ranks, then compares the arrays.
| arr | Void pointer to the array to be compared |
| length | The length of the array |
| datatype | MPI_Datatype of the array elements |
| src_rank | The source rank that has the original array |
| dest_rank | The destination rank that has the copied array |
| communicator | The MPI_Comm communicator that includes both ranks |
| compare | A function pointer to the function used to compare elements. Should take two void pointers and return 0 if they are equal and a non-zero value otherwise. |

| void dnewTrfPartitionInit | ( | int_t | nsupers, |
| dLUstruct_t * | LUstruct, | ||
| gridinfo3d_t * | grid3d | ||
| ) |


| void dpropagate_A_to_LU3d | ( | dLUstruct_t * | LUstruct, |
| int_t * | xa, | ||
| int_t * | asub, | ||
| double * | a, | ||
| superlu_dist_options_t * | options, | ||
| gridinfo3d_t * | grid3d, | ||
| int_t | nsupers, | ||
| float * | mem_use | ||
| ) |
Propagates the new values of A into the existing L and U data structures.
| Llu | The local L and U data structures. |
| xa | The index array of A. |
| asub | The row subscripts of A. |
| a | The numerical values of A. |
| options | The options array. |
| grid | The process grid. |
| mem_use | The memory usage. |

| int_t dReDistribute_A3d | ( | SuperMatrix * | A, |
| dScalePermstruct_t * | ScalePermstruct, | ||
| Glu_freeable_t * | Glu_freeable, | ||
| int_t * | xsup, | ||
| int_t * | supno, | ||
| gridinfo3d_t * | grid3d, | ||
| int_t * | colptr[], | ||
| int_t * | rowind[], | ||
| double * | a[] | ||
| ) |
| float pddistribute3d | ( | superlu_dist_options_t * | options, |
| int_t | n, | ||
| SuperMatrix * | A, | ||
| dScalePermstruct_t * | ScalePermstruct, | ||
| Glu_freeable_t * | Glu_freeable, | ||
| dLUstruct_t * | LUstruct, | ||
| gridinfo3d_t * | grid3d | ||
| ) |
| void propagateDataThroughMatrixBlocks | ( | int_t | nsupers, |
| Glu_freeable_t * | Glu_freeable, | ||
| dLUstruct_t * | LUstruct, | ||
| gridinfo3d_t * | grid3d, | ||
| int_t * | Urb_length, | ||
| int_t * | rb_marker, | ||
| int_t * | Urb_fstnz, | ||
| int_t * | Ucbs, | ||
| int ** | ToSendR, | ||
| int * | ToSendD, | ||
| int * | ToRecv | ||
| ) |
The function propagate_blocks performs data propagation in the form of values through blocks of a supernodal sparse matrix. It sends values to particular blocks and marks blocks to receive new values depending on certain conditions. It also counts the number of non-zeros in each block row and keeps track of the number of column blocks in each block row.
Input: nsupers: Total number of supernodes, i.e., the number of block columns in the original matrix. grid: The process grid. This grid contains the mapping of the matrix blocks to the process grid. xusub: An array of indices, each pointing to the start of each column in the usub array. usub: An array containing the row indices of non-zero elements of the supernodal matrix. ToSendR: A 2D flag array indicating which blocks need to be sent to other processes, organized by column. ToSendD: A flag array indicating which blocks are to be sent to other processes. Urb_length: An array containing the number of non-zero elements in each block row of the matrix. rb_marker: A marker array to track the last block column visited in each block row. Urb_fstnz: An array containing the number of first non-zero elements in each block row of the matrix. Ucbs: An array counting the number of column blocks in each block row. ToRecv: A flag array indicating which blocks are to be received from other processes.
Output: ToSendR, ToSendD, Urb_length, rb_marker, Urb_fstnz, Ucbs, ToRecv are modified in place. Their new values depend on the conditions checked during the loops.