- Class oski_matCSR_t
- Add a flag to indicate whether the matrix has a full (all non-zero) diagonal so that the triangular solve kernel does not have to check this condition explicitly.

- Class tagBebop_matTRIPART_t
- Fill in formal description of this format.

- Global BLAS_xAXPY
- Correctly implement the negative stride case (not used in BeBOP).

- Global BLAS_xSCAL
- Correctly implement the negative stride case (not used in BeBOP).

- Global oski_CheckPattern
- Check symmetric and Hermitian full storage cases.

- Global oski_CheckPattern
- Add symmetric/Hermitian pattern check

- Global CountZeroRows
- This routine duplicates the functionality of oski_CountZeroRowsCSR(), and could be eliminated.

- Global ScatterBlockRow
- Update documentation for this routine.

- File error.c
- Wrap error handler get/set routines in mutexes.

- Global g_errlogfile
- Make g_errlogfile a static global variable that the user can change to redirect errors elsewhere.

- Global oski_DestroyBCSRFillProfile
- Does not need to be type-dependent.

- Global oski_HeurEstimateCost
- This implementation currently assumes our pessimistic upper-bound on the heuristic evaluation cost of 40 x (the time to stream through the matrix), and should be changed to use a build-time benchmark.

- File src/init.c
- Make this module thread-safe!

- Global oski_ReallocInternal
- Implement oski_ReallocInternal().

- Global oski_CalcMatRepr1Norm
- Fix the symmetric case; this is only an estimate.

- Global SymmMatMult
- Test the case when indices are unsorted.

- File matopts.h
- Reimplement using Hoemmen's matrix generator.

- Global oski_CheckArgsMatPowMult
- Need more verbose error messages in the event that the vectors have improper dimensions.

- Global oski_CreateSubmatReprFromCSR_funcpt
- Future functionality: implement submatrix instantiation.

- Global oski_InitMatTypeManager
- Should call this routine during library initialization.

- Global oski_WrapCSR
- The output properties data structure actually defines a more general property about the diagonal, namely, that it is all ones. However, the available input matrix properties only allow the user to specify whether or not there is an implicit unit diagonal. Thus, it is possible that the user could create an input matrix with an explicit unit diagonal, but this condition is not checked when wrapping the data structure. It might be desirable to do this to make optimized triangular solve for the unit diagonal case more efficient.

- Global oski_WrapCSR
- Similarly, the oski_matCSR_t data structure has "is_upper" and "is_lower" flags, which could be set even if the user asserts that the matrix has a "general" pattern.

- Global CountZeroRows
- This routine duplicates the functionality of oski_CountZeroRowsCSR(), and could be eliminated.

- Global testmat_GenDenseCSR
- What is the best way to initialize the dense matrix? For benchmarking, it seems sufficient to initialize all entries to 'tiny' values (here, ), which is faster than calling the random number generator.

- File testvec.h
- testmat_ChooseDim and ChooseDivisible do not actually need to be build-type dependent.

- Global ChooseFastest
- Implement this routine, given that we will need to allocate temporary vectors.

- File upper_conj.c
- The case of sorted indices assumes not only that the indices are sorted, but also that there is a unique diagonal element. Do we need to fix this? The general ordering case makes no such assumption.

- File upper_normal.c
- The case of sorted indices assumes not only that the indices are sorted, but also that there is a unique diagonal element. Do we need to fix this? The general ordering case makes no such assumption.

- Global OpenLua
- Create global OSKI-Lua matrix types for all registered types.

- Global oski_CreateLuaMatReprGenericFromCSR
- else: possible leak

- Global oski_FreeInputMatRepr
- Possible leak?

- Global oski_GetMatClique
- Test thoroughly!

- Global oski_GetMatDiagValues
- Test thoroughly!

- Global oski_IsMatPermuted
- Update this routine when Ali Pinar's TSP reordering code is implemented.

- Global oski_SetMatClique
- Test thoroughly!

- Global oski_SetMatDiagValues
- Test thoroughly!

- Global oski_TuneMat
- The current implementation does not try to re-tune if already tuned.
Check that the new data structure really is faster than the old.

- Global oski_ViewPermutedMat
- Update this routine when Ali Pinar's TSP reordering code is implemented.

- Global oski_ViewPermutedMatColPerm
- Update this routine when Ali Pinar's TSP reordering code is implemented.

- Global oski_ViewPermutedMatRowPerm
- Update this routine when Ali Pinar's TSP reordering code is implemented.

- Global oski_CreateMatReprFromCSR
- This fill ratio is wrong for symmetric matrices.

- Global oski_MatReprMult
- Delete the following assignment statements, made obsolete by above call to oski_TransposeProps().

- Global oski_MatReprMultAndMatReprTransMult
- What to do here if either of these calls fails?

- Global oski_MatReprTrisolve
- Could theoretically encounter OP_CONJ

- Group MIXSCALTYPES
- Write a short explanation of how to recompile an application to use different scalar index and value types, and how to mix types.

- Group FAQ
- Write a FAQ based on alpha-tester questions.

- Global oski_SetHint
- Restructure so that va_end() is always called.

- Global oski_MatTrisolve
- For efficiency, this routine does not attempt to pre-scan the matrix data structure and ensure there are no zero diagonals. At least for CSR and CSC input matrices, we should add some kind of check somewhere (e.g., at matrix handle creation time). A similar to-do appears elsewhere in this source.

- Group MATTYPE_MBCSR
- MBCSR currently has an overly strong interdependence on the BCSR data structure as defined in include/oski/BCSR/format.h because MBCSR contains a pointer to a BCSR object, and moreover initializes the fields of the BCSR object explicitly. We should weaken this dependence by implementing the submatrix instantiation functionality (see the defined but unused structure, oski_submat_t).

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