userconst.h File Reference


Detailed Description

Defines the constants available to the user in the official interface.

This header contains only those constants which are not related to errors and are defined in the official interface: http://bebop.cs.berkeley.edu/oski/oski-interface.pdf

Go to the source code of this file.

Degree of tuning.

#define ALWAYS_TUNE   ((int)(1000))
 Use to force "moderate" tuning in calls to Set explicit workload hints. routines.
#define ALWAYS_TUNE_AGGRESSIVELY   ((int)(100000))
 Use to force "aggressive" tuning in calls to Set explicit workload hints. routines.

Structural tuning hints.

enum  oski_tunehint_t {
  HINT_NO_BLOCKS = 1, HINT_SINGLE_BLOCKSIZE, HINT_MULTIPLE_BLOCKSIZES, HINT_ALIGNED_BLOCKS,
  HINT_UNALIGNED_BLOCKS, HINT_SYMM_PATTERN, HINT_NONSYMM_PATTERN, HINT_RANDOM_PATTERN,
  HINT_CORREL_PATTERN, HINT_NO_DIAGS, HINT_DIAGS, HINT_MAX
}
 The possible structural hints listed below are grouped as follows. More...

Defines

#define INC_OSKI_USERCONST_H
 oski/userconst.h has been included.
#define INVALID_MAT   ((oski_matrix_t)NULL)
 Invalid (NULL) matrix handle.
#define INVALID_VEC   ((oski_vecview_t)NULL)
 Invalid (NULL) vector view handle.
#define OSKI_CHECK_COPYMODE(x)   IS_VAL_IN_RANGE(x, COPY_INPUTMAT, SHARE_INPUTMAT)
 Returns 1 <==> the specified copy mode x is legal.
#define OSKI_CHECK_STORAGE(x)   IS_VAL_IN_RANGE(x, LAYOUT_COLMAJ, LAYOUT_ROWMAJ)
 Returns 1 <==> the specified storage mode is legal.
#define OSKI_CHECK_MATOP(op)   IS_VAL_IN_RANGE(op, OP_NORMAL, OP_CONJ_TRANS)
 Returns 1 <==> the specified op is a legal matrix op type.
#define OSKI_CHECK_ATAOP(op)   IS_VAL_IN_RANGE(op, OP_AT_A, OP_A_AH)
 Returns 1 <==> the specified op is a legal A^T*A op.
#define OSKI_CHECK_TUNEHINT(hint)   IS_VAL_IN_RANGE(hint, HINT_NO_BLOCKS, HINT_MAX-1)
 Returns 1 <==> Specified structural tuning hint is valid.
#define ARGS_NONE   ((int)0)
 Use when not providing arguments with a structural hint (see Set explicit workload hints.).

Enumerations

enum  oski_copymode_t { COPY_INPUTMAT, SHARE_INPUTMAT }
 Input matrix copy modes. More...
enum  oski_storage_t { LAYOUT_COLMAJ, LAYOUT_ROWMAJ }
 Dense multiple-vector storage layout. More...
enum  oski_matop_t { OP_NORMAL, OP_CONJ, OP_TRANS, OP_CONJ_TRANS }
 Matrix transpose options. More...
enum  oski_ataop_t { OP_AT_A, OP_AH_A, OP_A_AT, OP_A_AH }
 Transpose options for matrix-transpose-times-matrix ($A^T\cdot A$) kernel. More...
enum  oski_inmatprop_t {
  INMATPROP_NULL = -1, MAT_GENERAL = 0, MAT_TRI_UPPER, MAT_TRI_LOWER,
  MAT_SYMM_UPPER, MAT_SYMM_LOWER, MAT_SYMM_FULL, MAT_HERM_UPPER,
  MAT_HERM_LOWER, MAT_HERM_FULL, MAT_DIAG_EXPLICIT, MAT_UNIT_DIAG_IMPLICIT,
  INDEX_ONE_BASED, INDEX_ZERO_BASED, INDEX_UNSORTED, INDEX_SORTED,
  INDEX_REPEATED, INDEX_UNIQUE, INMATPROP_MAX
}
 Input matrix properties. More...


Enumeration Type Documentation

enum oski_tunehint_t
 

The possible structural hints listed below are grouped as follows.

  1. Dense block substructure
  2. Block alignment
  3. Symmetry/structural symmetry
  4. Random versus correlated pattern (for cache blocking)
  5. Diagonal structure
Enumerator:
HINT_NO_BLOCKS  No dense block structure.
HINT_SINGLE_BLOCKSIZE  Structure dominated by a single block size.

Parameters: r, c.

HINT_MULTIPLE_BLOCKSIZES  Structure has mixture of block sizes.

Parameters: k, r_1, c_1, ..., r_k, c_k.

HINT_ALIGNED_BLOCKS  Blocks are uniformly aligned.
HINT_UNALIGNED_BLOCKS  Blocks may have arbitrary alignment.
HINT_SYMM_PATTERN  Matrix is structurally symmetric, or nearly so.
HINT_NONSYMM_PATTERN  Matrix is not structurally symmetric.
HINT_RANDOM_PATTERN  Matrix non-zero pattern is nearly uniformly random.
HINT_CORREL_PATTERN  Row and column indices of structural non-zeros are highly correlated.
HINT_NO_DIAGS  No "consecutive diagonal" structure exists.
HINT_DIAGS  Consecutive diagonal structure exists.

Parameters: k, d_1, ..., d_k.

HINT_MAX  Dummy value, for bounds checking.


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