BeBOP Optimized Sparse Kernel Interface Library  1.0.1h
Defines | Enumerations
userconst.h File Reference

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

Go to the source code of this file.

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.).
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.

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...
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...

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


Define Documentation

#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.

oski/userconst.h has been included.

#define OSKI_CHECK_TUNEHINT (   hint)    IS_VAL_IN_RANGE(hint, HINT_NO_BLOCKS, HINT_MAX-1)

Returns 1 <==> Specified structural tuning hint is valid.

Referenced by oski_SetHint().


Enumeration Type Documentation

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.