Mir vs. Numpy: Reworked!

9il ilyayaroshenko at gmail.com
Sat Dec 5 07:04:59 UTC 2020


On Thursday, 3 December 2020 at 16:50:39 UTC, Andre Pany wrote:
> On Thursday, 3 December 2020 at 16:27:59 UTC, 9il wrote:
>> Hi all,
>>
>> Since the first announcement [0] the original benchmark [1] 
>> has been boosted [2] with Mir-like implementations.
>>
>> D+Mir:
>>  1. is more abstract than NumPy
>>  2. requires less code for multidimensional algorithms
>>  3. doesn't require indexing
>>  4. uses recursion across dimensions
>>  5. a few times faster than NumPy for non-trivial real-world 
>> applications.
>>
>> Why Mir is faster than NumPy?
>>
>> 1. Mir allows the compiler to generate specialized kernels 
>> while NumPy constraints a user to write code that needs to 
>> access memory twice or more times.
>>
>> Another Mir killer feature is the ability to write generalized 
>> N-dimensional implementations, while Numpy code needs to have 
>> separate implementations for 1D, 2D, and 3D cases. For 
>> example, the main D loop in the benchmark can compile for 4D, 
>> 5D, and higher dimensional optimizations.
>>
>> 2. @nogc iteration loop. @nogc helps when you need to control 
>> what is going on with your memory allocations in the critical 
>> code part.
>>
>> [0] 
>> https://forum.dlang.org/post/pemharpztorlqkxdooul@forum.dlang.org
>> [1] https://github.com/typohnebild/numpy-vs-mir
>> [2] https://github.com/typohnebild/numpy-vs-mir/pull/1
>>
>> The benchmark [1] has been created by Christoph Alt and Tobias 
>> Schmidt.
>>
>> Kind regards,
>> Ilya
>
> Hi Ilya,
>
> Thanks a lot for sharing the update. I am currently working on 
> porting a python package called FMPY to D. This package makes 
> usage of numpy and I hope I can use MIR here.

Probably you may want to express FMI entities as Algebraic types 
rather than classes. mir.algebraic can be really helpful here

http://mir-core.libmir.org/mir_algebraic.html

> Somehow it is hard to get started to learn MIR. What maybe 
> could help python developers is to have some articles showing 
> numpy coding and side by side the equivalent MIR coding.

It is hard for me to write articles. I will try to write a small 
one this year, but it would be Mir only. Maybe this benchmark can 
be used as an example and if one wishes to write a side-by-side 
comparison with NumPy I would be happy to comment and explain the 
D implementation and what it is doing internally.

> What I miss in MIR is a function to read and write CSV files. 
> Is s.th. like numpy.genfromtxt planned?

Unlikely I would add it but can do a code review.

Currently, we can load/safe NumPy binary data with numir

https://libmir.github.io/numir/io.html

Kind regards,
Ilya


More information about the Digitalmars-d-announce mailing list