123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * =====================================================================================
- *
- * Filename: suite.c
- *
- * Description: The main wrapper for the suite
- *
- * Version: 1.0
- * Created: 10/22/2009 08:40:34 PM
- * Revision: none
- * Compiler: gcc
- *
- * Author: Liang Wang (lw2aw), lw2aw@virginia.edu
- * Company: CS@UVa
- *
- * =====================================================================================
- */
- #include <stdio.h>
- #include <unistd.h>
- #include <getopt.h>
- #include <stdlib.h>
- #include <assert.h>
- #include "common.h"
- static int do_verify = 0;
- static struct option long_options[] = {
- /* name, has_arg, flag, val */
- {"input", 1, NULL, 'i'},
- {"size", 1, NULL, 's'},
- {"verify", 0, NULL, 'v'},
- {0,0,0,0}
- };
- extern void
- lud_base(float *m, int matrix_dim);
- int
- main ( int argc, char *argv[] )
- {
- int matrix_dim = 32; /* default matrix_dim */
- int opt, option_index=0;
- func_ret_t ret;
- const char *input_file = NULL;
- float *m, *mm;
- stopwatch sw;
- while ((opt = getopt_long(argc, argv, "::vs:i:",
- long_options, &option_index)) != -1 ) {
- switch(opt){
- case 'i':
- input_file = optarg;
- break;
- case 'v':
- do_verify = 1;
- break;
- case 's':
- matrix_dim = atoi(optarg);
- fprintf(stderr, "Currently not supported, use -i instead\n");
- fprintf(stderr, "Usage: %s [-v] [-s matrix_size|-i input_file]\n", argv[0]);
- exit(EXIT_FAILURE);
- case '?':
- fprintf(stderr, "invalid option\n");
- break;
- case ':':
- fprintf(stderr, "missing argument\n");
- break;
- default:
- fprintf(stderr, "Usage: %s [-v] [-s matrix_size|-i input_file]\n",
- argv[0]);
- exit(EXIT_FAILURE);
- }
- }
- if ( (optind < argc) || (optind == 1)) {
- fprintf(stderr, "Usage: %s [-v] [-s matrix_size|-i input_file]\n", argv[0]);
- exit(EXIT_FAILURE);
- }
-
- if (input_file) {
- printf("Reading matrix from file %s\n", input_file);
- ret = create_matrix_from_file(&m, input_file, &matrix_dim);
- if (ret != RET_SUCCESS) {
- m = NULL;
- fprintf(stderr, "error create matrix from file %s\n", input_file);
- exit(EXIT_FAILURE);
- }
- } else {
- printf("No input file specified!\n");
- exit(EXIT_FAILURE);
- }
- if (do_verify){
- printf("Before LUD\n");
- print_matrix(m, matrix_dim);
- matrix_duplicate(m, &mm, matrix_dim);
- }
- stopwatch_start(&sw);
- lud_base(m, matrix_dim);
- stopwatch_stop(&sw);
- printf("Time consumed(ms): %lf\n", 1000*get_interval_by_sec(&sw));
- if (do_verify){
- printf("After LUD\n");
- print_matrix(m, matrix_dim);
- printf(">>>Verify<<<<\n");
- lud_verify(mm, m, matrix_dim);
- free(mm);
- }
- free(m);
- return EXIT_SUCCESS;
- } /* ---------- end of function main ---------- */
|