autotune.c File Reference


Detailed Description

Generic SpMV benchmarking utility.

This utility benchmarks an arbitrary workload before and after automatic tuning.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <oski/oski.h>
#include <oski/simplelist.h>
#include "abort_prog.h"
#include "testvec.h"
#include "timing.h"
#include "parse_opts.h"
#include "readhbpat.h"
#include "keropts.h"

Functions

static void usage (const char *progname)
 Print command-line options.
static void abort_option_error (const char *flag, const char *bad_value, const char *good_value_1,...)
static simplelist_tprocess_options (int argc, char *argv[], char **p_matfile, int *p_is_workload_explicit, int *p_always_tune, int *p_expand_symm)
static void create_workload_data_MatMult (oski_index_t m, oski_index_t n, kerargs_MatMult_t *opt)
 Allocate temporary arrays for simulating an SpMV call.
static void create_workload_data_MatTrisolve (oski_index_t m, oski_index_t n, kerargs_MatTrisolve_t *opt)
 Allocate temporary arrays for simulating a triangular solve call.
static void create_workload_data_MatTransMatMult (oski_index_t m, oski_index_t n, kerargs_MatTransMatMult_t *opt)
 Allocate temporary arrays for simulating an A^T*A*x call.
static void create_workload_data_MatMultAndMatTransMult (oski_index_t m, oski_index_t n, kerargs_MatMultAndMatTransMult_t *opt)
 Allocate temporary arrays for simulating two SpMV calls.
static void create_workload_data_MatPowMult (oski_index_t m, oski_index_t n, kerargs_MatPowMult_t *opt)
 Allocate temporary arrays for simulating an SpMV call.
static void create_workload_data (oski_index_t num_rows, oski_index_t num_cols, simplelist_t *workload)
 Allocate temporary arrays for workload simulation.
static void set_workload_hints_MatMult (oski_matrix_t A, const kerargs_MatMult_t *opt)
static void set_workload_hints_MatTrisolve (oski_matrix_t A, const kerargs_MatTrisolve_t *opt)
static void set_workload_hints_MatTransMatMult (oski_matrix_t A, const kerargs_MatTransMatMult_t *opt)
static void set_workload_hints_MatMultAndMatTransMult (oski_matrix_t A, const kerargs_MatMultAndMatTransMult_t *opt)
static void set_workload_hints_MatPowMult (oski_matrix_t A, const kerargs_MatPowMult_t *opt)
static int change_numcalls (kernel_t *opt, int num_calls)
static void set_workload_hints (oski_matrix_t A, simplelist_t *workload, int always_tune)
static void run_workload_MatMult (const oski_matrix_t A, kerargs_MatMult_t *opt)
static void run_workload_MatTrisolve (const oski_matrix_t A, kerargs_MatTrisolve_t *opt)
static void run_workload_MatTransMatMult (const oski_matrix_t A, kerargs_MatTransMatMult_t *opt)
static void run_workload_MatMultAndMatTransMult (const oski_matrix_t A, kerargs_MatMultAndMatTransMult_t *opt)
static void run_workload_MatPowMult (const oski_matrix_t A, kerargs_MatPowMult_t *opt)
static void run_workload (const oski_matrix_t A, const simplelist_t *workload)
static double count_workload_flops_per_nz (const simplelist_t *workload)
 Given a workload, returns the number of flops executed per non-zero element.
int main (int argc, char *argv[])
 Main benchmark program.


Generated on Wed Sep 19 16:41:21 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6