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