96 #ifdef HAVE_EPETRA_TEUCHOS
113 #include "Teuchos_FileInputSource.hpp"
114 #include "Teuchos_XMLObject.hpp"
115 #include "Teuchos_XMLParameterListReader.hpp"
116 #include "EpetraExt_BlockMapIn.h"
117 #include "EpetraExt_CrsMatrixIn.h"
118 #include "EpetraExt_VectorIn.h"
119 #include "EpetraExt_MultiVectorIn.h"
122 using namespace Teuchos;
124 int main(
int argc,
char *argv[])
127 MPI_Init(&argc,&argv);
129 int mypid = Comm.MyPID();
138 const char *datafile;
139 if (argc > 1) datafile = argv[1];
140 else datafile =
"A.dat";
149 const int lineLength = 1025;
150 char line[lineLength];
152 FILE *handle = fopen(datafile,
"r");
155 printf(
"Cannot open file \"%s\" for reading.\n",datafile);
156 printf(
"usage: cxx_main.exe <filename>, where filename defaults to \"A.dat\".\n");
166 if(fgets(line, lineLength, handle)==0) {
if (handle!=0) fclose(handle);}
167 }
while (line[0] ==
'%');
169 if(sscanf(line,
"%d %d %d", &Nrows, &Ncols, &NZ)==0) {
if (handle!=0) fclose(handle);}
178 if (mypid==0) printf(
"Reading matrix with %d rows, %d columns, %d nonzeros from file \"%s\".\n",Nrows,Ncols,NZ,datafile);
179 errCode=EpetraExt::MatrixMarketFileToCrsMatrix(datafile, *rowmap, *colmap, Amat);
197 List.set(
"zerobased",
true);
198 List.set(
"unique",
true);
202 OskiAmat->
Multiply(
true, y, x, 2, 1);
210 OskiAmat->
Multiply(
false, Oskix, Oskiy);
211 OskiAmat->
Multiply(
true, Oskiy, Oskix, 2, 1);
217 OskiAmat->
Multiply(
false, OskiX, OskiY);
218 OskiAmat->
Multiply(
true, OskiY, OskiX, 2.0, 1.0);
221 List2.set(
"singleblocksize",
true);
224 List2.set(
"alignedblocks",
true);
225 OskiAmat->
SetHintMultiply(
false, 1.0, Oskix, 0.0, Oskiy, ALWAYS_TUNE_AGGRESSIVELY, List);
230 std::cout <<
"Aggressive transforms performed are: " << trans <<
"\n";
231 OskiAmat->
Multiply(
false, Oskix, Oskiy);
239 OskiAmat->
SetHintMultiply(
true, 2.0, OskiX, 1.0, OskiY, ALWAYS_TUNE, List);
243 std::cout <<
"Moderate transforms performed are: " << trans <<
"\n";
244 OskiAmat->
Multiply(
true, OskiX, OskiY, 2, 1);
255 std::cout <<
"Moderate transforms performed are: " << trans <<
"\n";
256 OskiAmat->
Multiply(
true, OskiX, OskiY, 2, 1);
261 List.set(
"invalidinter",
true);
292 return(EXIT_SUCCESS);