Matrix libraries Lassi Kortela 06 Oct 2019 14:51 UTC

> Doesn't slib include pure-scheme matrix algebra and fft already?
>
> To do anything fast nowadays you need gpu acceleration, and I'm not sure
> it's easy to rewrite from scratch. So the potential srfi would need to not
> just include all the functions, but possibly support different backends,
> i.e. pure scheme, blas, gpu-blas, etc.
>
> I wonder if that would be really a good thing to include in the language
> itself (even if -large). But I'm not an expert by no means.

Fully agreed.

For workaday array/vector support in Scheme: Per, Marc, John and
possibly others have written several SRFIs.

For the heavy lifting and fancy math, gobs of brainpower and R&D dollars
have gone into things like CUDA, BLAS, Torch, TensorFlow, R and
Matlab/Octave. There is no conceivable way we can approach that level of
features and performance from scratch. "If you can't beat them, join
them" would be the winning move here :)

For prior art on multi-backend matrix stuff that integrates into Lisp,
look into Clojure's core.matrix and Incanter.

One thing that's easy to forget in these discussions is storage formats.
It's not that useful if you can't ship matrices from those common
packages into Scheme and out again. People who are accomplished with
this stuff won't want to use Scheme as their only tool. We should have
effortless compatibility with established formats.

At some point, standard network protocols will probably emerge for
shipping ML/statistics batch jobs to GPU clusters and getting out the
results. When they do, we should jump in.