On Saturday, 23 July 2016 at 11:05:57 UTC, Etranger wrote:

1- Is there a cleaner way to do it ? I had to use struct because I want every thing to happen at compile time and on the stack (without gc). And I had to use string mixins because template mixin does not work the way I tried to use it ( see the error last line).

Yes, but it is more complicated in terms of multidimensional and generic abstraction. First we need to finish and test general matrix multiplication [2].

2- Is there a safer way to do it (without using pointers) ?

Yes, but it is slower than pointers. See Internal Binary Representation for Slice structure [1]. Mir's BLAS will use pointers.

3- Do you think I'll hit a wall with this approach ?

No idea. In the same time I think that C++ approach is not flexible as we can build for D. Currently we need std.algorithm analog for multidimensional case. It would be more flexible than expression templates. But it requires more complex architecture analysis.

4- Do you known any D libs that uses expression template for linear algebra ?

I don't know. ndslice provides operations like `a[] += b` [1]. I just opened a PR to optimise them using SIMD instructions [4]. Mir BLAS will have more low level API for matrix multiplication then Eigen. See PR for gemm [2]. Expression like API can be build on top of Mir's BLAS.

I'll be very happy if I could contribute something useful for the D community :)

That would be great! See Mir's issues [3]. Feel free to open new one and start a discussion or open PR. Mir requires a lot of benchmarks, for example versus Eigen. Just Eigen benchmark of Level 3 BLAS functionality (like matrix multiplication) with proper CSV console output would very helpful. See current charts [5] and [6]

[1] http://dlang.org/phobos/std_experimental_ndslice_slice.html#.Slice
[2] https://github.com/libmir/mir/pull/255
[3] https://github.com/libmir/mir/issues
[4] https://github.com/dlang/phobos/pull/4647
[5] https://s3.amazonaws.com/media-p.slid.es/uploads/546207/images/2854632/Untitled_2.004.png [6] https://s3.amazonaws.com/media-p.slid.es/uploads/546207/images/2854640/Untitled_2.006.png

Best regards,
Ilya

Reply via email to