29int main(
int argc,
char** argv)
34 std::cout <<
"usage: ./trilinosMatSquare A.mtx\n";
38 MPI_Init(&argc,&argv);
39 Epetra_MpiComm Comm(MPI_COMM_WORLD);
41 Epetra_SerialComm Comm;
44 char* A_file = argv[1];
45 int localProc = Comm.MyPID();
49 std::cout <<
"Squaring Matrix"<< A_file << std::endl;
52 Epetra_CrsMatrix*
A = NULL;
53 Epetra_CrsMatrix*
B = NULL;
54 Epetra_CrsMatrix*
C = NULL;
56 Epetra_Map* A_row_map = NULL;
57 Epetra_Map* A_col_map = NULL;
58 Epetra_Map* A_range_map = NULL;
59 Epetra_Map* A_domain_map = NULL;
62 double tstart = MPI_Wtime();
65 int err = EpetraExt::MatrixMarketFileToBlockMaps(A_file,
67 (Epetra_BlockMap*&)A_row_map,
68 (Epetra_BlockMap*&)A_col_map,
69 (Epetra_BlockMap*&)A_range_map,
70 (Epetra_BlockMap*&)A_domain_map);
74 std::cout <<
"create_maps A returned err=="<<err<<std::endl;
80 err = EpetraExt::MatrixMarketFileToCrsMatrix(A_file, *A_row_map, *A_range_map, *A_domain_map,
A);
83 std::cout <<
"Error, MatrixMarketFileToCrsMatrix returned " << err << std::endl;
86 B =
new Epetra_CrsMatrix(*
A);
88 double tio = MPI_Wtime() - tstart;
91 std::cout <<
"Total I/O time: " << tio << std::endl;
96 C =
new Epetra_CrsMatrix(Copy,
A->RowMap(), 1);
97 err = EpetraExt::MatrixMatrix::Multiply(*
A,
false, *
B,
false, *
C);
101 std::cout <<
"err "<<err<<
" from MatrixMatrix::Multiply"<<std::endl;
105 double tmul = MPI_Wtime() - tstart;
108 std::cout <<
"nnz in C=AB: " <<
C->NumGlobalNonzeros() << std::endl;
109 std::cout <<
"Total multiplication time: " << tmul << std::endl;