研究下sparse matrix, 最近正好看了一个项目: hpcg。 一周多时间,感觉蛮有意思的。rebuild the wheel.
1 struct SparseMatrix
2 {
3 /* geometry data structure associated with this sparsematrix */
4 Geometry* geom;
5
6 /* global variable */
7 global_int_t totalNumberOfRows;
8 global_int_t totalNumberOfNonzeros;
9
10 /*local variable */
11 local_int_t localNumberOfRows;
12 local_int_t localNumberOfColumns;
13 local_int_t localNumberOfNonzeros;
14 global_int_t** mtxIndG;
15 global_int_t** mtxIndL; //some index in local is from external procs
16 double** matrixValues;
17
18 char* nonzerosInRow;
19
20 /* global/local map define */
21 std::map<global_int_t, local_int_t> globalToLocalMap;
23 std::vector<local_int_t, global_int_t> localToGlobalMap;
25
26
27 /* MPI communication coefficients */
28 local_int_t numberOfExternalValues; // number that need receving from external procs
29 int numberOfSendNeighbors;
30 local_int_t totalToBeSent; // total elements to be send to all required neigbhors
31 local_int_t* elementsToSend; //an array, sto