int main(int argc, char** argv) { Options options; ParseOptions(argc, argv, &options); srand(options.seed); std::vector<float> matrix_a(options.row_a * options.column_a); std::vector<float> matrix_b(options.row_b * options.column_b); std::vector<float> matrix_c(options.row_b * options.column_a); SetRandomInit(matrix_a.size(), &matrix_a[0]); SetRandomInit(matrix_b.size(), &matrix_b[0]); //std::cout << "Matrix a" << std::endl; //PrintMatrix(options.column_a, options.row_a, &matrix_a[0]); std::cout << "Matrix a size=(\t" << options.column_a << ",\t" << options.row_a << ")" << std::endl; //std::cout << "Matrix b" << std::endl; //PrintMatrix(options.column_b, options.row_b, &matrix_b[0]); std::cout << "Matrix b size=(\t" << options.column_b << ",\t" << options.row_b << ")" << std::endl; std::cout << "Matrix c size=(\t" << options.column_a << ",\t" << options.row_b << ")" << std::endl; std::cout << "Selected implimentation is " << GetName(options.implementation) << std::endl; double start_time = GetTimeSec(); if (MultiplyMatrices(options.implementation, options.column_a, options.row_a, &matrix_a[0], options.column_b, options.row_b, &matrix_b[0], &matrix_c[0])) { std::cerr << "Error : multiply" << std::endl; } double end_time = GetTimeSec(); //std::cout << "Matrix c" << std::endl; //PrintMatrix(options.column_a, options.row_b, &matrix_c[0]); std::cout << "Time : "; std::cout.precision(6); std::cout.width(10); std::cout << end_time - start_time << " sec" << std::endl; if (options.checking_result) { std::cout << "Checking Result" << std::endl; std::vector<float> reference_matrix_c(options.row_b * options.column_a); if (MultiplyMatrices(kCpuReference, options.column_a, options.row_a, &matrix_a[0], options.column_b, options.row_b, &matrix_b[0], &reference_matrix_c[0])) { std::cerr << "Error : multiply" << std::endl; } PrintDiff(options.column_a, options.row_b, &reference_matrix_c[0], &matrix_c[0], 100, 1.0e-5f); } }
int main(int argc, char *argv[]){ if(argc != 4){ std::cerr << "usage: ./matmult A.in B.in C.out" << std::endl; return -1; } Matrix matrix_a(argv[1]); Matrix matrix_b(argv[2]); Matrix matrix_c = matrix_a*matrix_b; matrix_c.print(argv[3]); return 0; }