***********************************************************
Maintaining the Modified Block Compressed Sparse Row Module
***********************************************************

-------------------
Directory structure
-------------------

All source files are stored in 'src/MBCSR', and all header files
in 'include/oski/MBCSR'.

Core kernel implementations (e.g., 3x2 MBCSR triangular solve) are
organized by kernel, and stored in 'src/MBCSR/<KernelName>',
where <KernelName> is one of: MatMult, MatTrisolve, MatTransMatMult,
MatMultAndMatTransMult. The power kernel (MatPowMult) is not currently
supported.

The Lua factory module for generating the MBCSR type is 'MBCSR.lua'.

----------------------
Kernel implementations
----------------------

Kernel implementations are organized by block size, ${r} x ${c}.
More specifically, all the ${r} x ${c} kernel implementations are
compiled into a pseudo-library named

  liboski_mat_MBCSR_${r}x${c}_${typetag}.${ext}

where ${ext} is a libtool pseudo-library extension (la or lo),
and ${typetag} is an index/value type identifier (e.g., Tis, Tid,
Tic, Tiz). All of these pseudo-libraries are combined into a
single library for the entire MBCSR type:

  liboski_mat_MBCSR_${typetag}.${ext2}

where ${ext2} includes the pseudo-library extensions, as well
as the actual library extensions of .a, .so, and, under
Windows, .dll.

The kernel implementations themselves are stored by kernel into
subdirectories, 'src/MBCSR/<KernelName>'. The AutoMake file,
Makefile.am, includes a make stub, Make.MBCSR, which defines all the
macros needed to build the ${r}x${c} library modules from the
individual kernel implementations. This stub may be automatically
regenerated using the script, gen_kernel_stub.sh, which takes no
arguments.

The individual block size-specific core kernels are generated by
bash scripts, stored in the respective kernel directories. Run each
script with no arguments to see its usage. By default, only block
sizes up to 8x8 are generated, but each script allows the caller
to override this value.

# eof
