#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 "parse_opts.h"
#include "keropts.h"
#include "workload.h"
Functions | |
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. | |
void | workload_CreateData (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) |
void | workload_SetHints (oski_matrix_t A, simplelist_t *workload, int always_tune) |
Call OSKI to set workload hints. | |
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) |
void | workload_Run (const oski_matrix_t A, const simplelist_t *workload) |
Simulate one execution of a given workload. | |
double | workload_CountFlopsPerNz (const simplelist_t *workload) |
Given a workload, returns the number of flops executed per non-zero element. |
double workload_CountFlopsPerNz | ( | const simplelist_t * | workload | ) |
Given a workload, returns the number of flops executed per non-zero element.
Return the number of flops executed per non-zero element for a given workload.
References kernel_t::args, kernel_t::kernel, kernel_t::MatMult, kernel_t::MatMultAndMatTransMult, kernel_t::MatPowMult, kernel_t::MatTransMatMult, kernel_t::MatTrisolve, kerargs_MatPowMult_t::num_calls, kerargs_MatMultAndMatTransMult_t::num_calls, kerargs_MatTransMatMult_t::num_calls, kerargs_MatTrisolve_t::num_calls, kerargs_MatMult_t::num_calls, kerargs_MatPowMult_t::num_vecs, kerargs_MatMultAndMatTransMult_t::num_vecs, kerargs_MatTransMatMult_t::num_vecs, kerargs_MatTrisolve_t::num_vecs, kerargs_MatMult_t::num_vecs, kerargs_MatPowMult_t::power, simplelist_GetElem(), and simplelist_GetLength().
void workload_Run | ( | const oski_matrix_t | A, | |
const simplelist_t * | workload | |||
) |
Simulate one execution of a given workload.
References kernel_t::args, INVALID_MAT, kernel_t::kernel, kernel_t::MatMult, MatMultAndMatTransMult(), kernel_t::MatPowMult, kernel_t::MatTransMatMult, kernel_t::MatTrisolve, simplelist_GetElem(), and simplelist_GetLength().