00001
00012 #if !defined(INC_BENCH_MATOPTS_H)
00013
00014 #define INC_BENCH_MATOPTS_H
00015
00016 #include <oski/common.h>
00017 #include <oski/mangle.h>
00018 #include <oski/matrix.h>
00019
00020 #if defined(DO_NAME_MANGLING)
00021
00022 #define matopts_t MANGLE_(matopts_t)
00023 #define matopts_Init MANGLE_(matopts_Init)
00024 #define matopts_Display MANGLE_(matopts_Display)
00025 #define matopts_Usage MANGLE_(matopts_Usage)
00026 #define matopts_Process MANGLE_(matopts_Process)
00027 #define matopts_CreateMat MANGLE_(matopts_CreateMat)
00028 #endif
00029
00033 #define IS_MATTYPE(x, mt) (strcmp(x, mt) == 0)
00034
00036 #define MATTYPE_HARWELL_BOEING "hb"
00037
00038 #define MATTYPE_DENSE "dense"
00039
00040 #define MATTYPE_BANDED "band"
00041
00042 #define MATTYPE_RANDOM "random"
00043
00044 #define MATTYPE_TRI_LOWER "lowtri"
00045
00046 #define MATTYPE_TRI_UPPER "uptri"
00047
00048 #define MATTYPE_SYMM "symm"
00049
00050 #define MATTYPE_RANDRECT "randrect"
00051
00054 typedef struct
00055 {
00056 const char *mattype;
00057 const char *matfile;
00058 int expand_symm;
00059 oski_index_t min_rows;
00060 oski_index_t min_cols;
00061 oski_index_t min_nnz;
00062 oski_index_t min_row_nnz;
00063 oski_index_t row_multiple;
00064 oski_index_t col_multiple;
00065 } matopts_t;
00066
00068 void matopts_Init (matopts_t * opts);
00069
00071 void matopts_Display (const matopts_t * opts, FILE * fp);
00072
00074 void matopts_Usage (FILE * fp);
00075
00077 int matopts_Process (int argc, char *argv[], int i, matopts_t * opts);
00078
00080 oski_matrix_t matopts_CreateMat (const matopts_t * opts,
00081 oski_index_t * p_num_rows,
00082 oski_index_t * p_num_cols,
00083 oski_index_t * p_nnz_stored,
00084 oski_index_t * p_nnz);
00085 #endif
00086
00087