Mir Algorithm preview: the new ndslice, dlang Iterators, fast generics

Ilya Yaroshenko via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 7 08:18:20 PST 2017


Hi all,

This is early preview before the announce of Mir Algorithm and 
the new ndslice. Ndslice is a dlang package for multidimensional 
and numeric worlds.

The new ndslice has three kinds:

1. Universal:
     numpy-like, similar to the old ndslice,

2. Canonical:
     BLAS-like, raw stride is assumed to be 1

3. Contiguous:
     Contiguous in memory, no strides are required.

New ndslice is 90% reworked.

Mir Algorithm has its own map, retro, stride, reduce, naryFun, 
bitwise, to and others stuff from Phobos. But they are 
implemented differently, may have different API (like iota), and 
may boost your program and compilation speed few times.

Ah, ndslice is based on iterators! Dlang iterators! Dlang 
iterators are only random access, other kinds of iterators can be 
replaced with D Ranges. There are strong reasons why iterators 
are the best for random access and multidimensional worlds. They 
will be described in the future this year. Do not worry, we do 
not need to write C++-like code, iterators are used internally by 
ndslices :-)

We have full backward compatibility with Phobos Range API, so we 
can mix Phobos and Mir code. Iterators are useful if we want to 
implement custom and fast ndslices. Big collection of predefined 
ndslices can be found at mir.ndslice.topology .

Mir Algorithm is already used in Tamedia's lincount (for bitwise 
and accelerated bit count), Mir main repository. A PR with update 
for the D Computer Vision library is 85% ready.

Docs
http://docs.algorithm.dlang.io
======================

Github
https://github.com/libmir/mir-algorithm
======================

Dub
http://code.dlang.org/packages/mir-algorithm
======================

Feedback is welcome!

For commercial support: ilyayaroshenko at gmail dot com

Best regards,
Ilya



More information about the Digitalmars-d mailing list