Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "ColPackHeaders.h"
00017
00018 using namespace ColPack;
00019 using namespace std;
00020
00021 #ifndef TOP_DIR
00022 #define TOP_DIR "."
00023 #endif
00024
00025
00026 string baseDir=TOP_DIR;
00027
00028 #include "extra.h"
00029
00030
00031 int main()
00032 {
00033
00034 string s_InputFile;
00035 s_InputFile = baseDir;
00036 s_InputFile += DIR_SEPARATOR; s_InputFile += "Graphs"; s_InputFile += DIR_SEPARATOR; s_InputFile += "mtx-spear-head.mtx";
00037
00038
00039
00040
00041 unsigned int *** uip3_SparsityPattern = new unsigned int **;
00042 double*** dp3_Value = new double**;
00043 int rowCount, columnCount;
00044 ConvertMatrixMarketFormatToRowCompressedFormat(s_InputFile, uip3_SparsityPattern, dp3_Value,rowCount, columnCount);
00045
00046 cout<<"just for debugging purpose, display the 2 matrices: the matrix with SparsityPattern only and the matrix with Value"<<endl;
00047 cout<<fixed<<showpoint<<setprecision(2);
00048 cout<<"(*uip3_SparsityPattern)"<<endl;
00049 displayCompressedRowMatrix((*uip3_SparsityPattern),rowCount);
00050 cout<<"(*dp3_Value)"<<endl;
00051 displayCompressedRowMatrix((*dp3_Value),rowCount);
00052 cout<<"Finish ConvertMatrixMarketFormatToRowCompressedFormat()"<<endl;
00053 Pause();
00054
00055
00056 double*** dp3_Seed = new double**;
00057 int *ip1_SeedRowCount = new int;
00058 int *ip1_SeedColumnCount = new int;
00059 int* ip1_ColorCount = new int;
00060
00061
00062
00063 GraphColoringInterface *g = new GraphColoringInterface(SRC_MEM_ADOLC, *uip3_SparsityPattern, rowCount);
00064
00065
00066 g->Coloring("SMALLEST_LAST", "ACYCLIC_FOR_INDIRECT_RECOVERY");
00067
00068
00069 (*dp3_Seed) = g->GetSeedMatrix(ip1_SeedRowCount, ip1_SeedColumnCount);
00070
00071
00072
00073
00074
00075 cout<<"Finish GenerateSeed()"<<endl;
00076 *ip1_ColorCount = *ip1_SeedColumnCount;
00077
00078 displayMatrix(*dp3_Seed, *ip1_SeedRowCount, *ip1_SeedColumnCount);
00079 Pause();
00080
00081
00082
00083
00084 double*** dp3_CompressedMatrix = new double**;
00085 cout<<"Start MatrixMultiplication()"<<endl;
00086 MatrixMultiplication_VxS(*uip3_SparsityPattern, *dp3_Value, rowCount, columnCount, *dp3_Seed, *ip1_SeedColumnCount, dp3_CompressedMatrix);
00087 cout<<"Finish MatrixMultiplication()"<<endl;
00088
00089 displayMatrix(*dp3_CompressedMatrix,rowCount,*ip1_ColorCount);
00090 Pause();
00091
00092
00093
00094 double*** dp3_NewValue = new double**;
00095 HessianRecovery* hr = new HessianRecovery;
00096 hr->IndirectRecover_RowCompressedFormat(g, *dp3_CompressedMatrix, *uip3_SparsityPattern, dp3_NewValue);
00097 cout<<"Finish Indirect Recover()"<<endl;
00098
00099 displayCompressedRowMatrix(*dp3_NewValue,rowCount);
00100 Pause();
00101
00102
00103 if (CompressedRowMatricesREqual(*dp3_Value, *dp3_NewValue, rowCount,0,1)) cout<< "*dp3_Value == dp3_NewValue"<<endl;
00104 else cout<< "*dp3_Value != dp3_NewValue"<<endl;
00105
00106
00107 Pause();
00108
00109
00110
00111 free_2DMatrix(uip3_SparsityPattern, rowCount);
00112 uip3_SparsityPattern=NULL;
00113
00114 free_2DMatrix(dp3_Value, rowCount);
00115 dp3_Value=NULL;
00116
00117 delete dp3_Seed;
00118 dp3_Seed = NULL;
00119
00120 delete ip1_SeedRowCount;
00121 ip1_SeedRowCount=NULL;
00122
00123 delete ip1_SeedColumnCount;
00124 ip1_SeedColumnCount = NULL;
00125
00126 free_2DMatrix(dp3_CompressedMatrix, rowCount);
00127 dp3_CompressedMatrix = NULL;
00128
00129 delete ip1_ColorCount;
00130 ip1_ColorCount = NULL;
00131
00132 delete hr;
00133 hr = NULL;
00134
00135 delete dp3_NewValue;
00136 dp3_NewValue=NULL;
00137
00138 delete g;
00139 g=NULL;
00140
00141 return 0;
00142 }