-
Notifications
You must be signed in to change notification settings - Fork 120
Description
Right now every matrix type has it's own set of classes; CommonOps_DDRM, CommonOps_ZDRM, CommonOps_DSCC, ... etc. Then if you want to call concurrent implementations you have to call another variant, i.e. CommonOps_MT_DDRM. Currently the only way to hide this complexity is to use SimpleMatrix. However, that only supports a few functions and you lose control over memory management.
To make people's lives easier, I'm proposing CommonOps (and other similar named classes) that will support most of the Procedural API for all matrix types in a single location. It will also handle automatic switching to concurrent implementations when the matrix size is large enough and handle workspace variables using ThreadLocal.
https://github.com/lessthanoptimal/ejml/tree/feature/fancy_ops
That's the working branch for this work. One issue that has become apparent is that an automated procedure for either checking that all functions have been brought over or to generate CommonOps itself. The goal for the next release is to have just enough functionality to run in JavaMatrixBenchmark. Threaded implementations have yet to be run in that public benchmark because there was no easy way to use them.