September 26, 2016
On Monday, 26 September 2016 at 11:03:40 UTC, Joseph Rushton Wakeling wrote:
> On Monday, 26 September 2016 at 10:01:44 UTC, Ilya Yaroshenko wrote:
>> I mean that for single precision numbers I have 2 charts (normal and normalized).
>
> Ah, OK.  Would still be nice to have a note, though, on how the numbers in the charts are generated, i.e. are they the result of a single run, best of N, average of N ... ?

The data is the same. The first chart represents absolute values, the second chart represents normalised values. Will add
September 26, 2016
On Saturday, 24 September 2016 at 07:20:25 UTC, Ilya Yaroshenko wrote:
> Please help to improve the blog post during this weekend. It will be announced in the Reddit.

One other place that a little more explanation could be helpful is this sentence:

"It is written completely in D for LDC (LLVM D Compiler), without any assembler blocks."

It would be nice to describe (if it can be summarized in a sentence) why Mir GLAS relies on LDC and/or LLVM, and what differences in outcome can be expected if one uses a different compiler (will it not work at all, or just not as well?).

The broader topic of what compiler features Mir GLAS uses could be the topic of an entire blog post in its own right, and might be very interesting.
September 26, 2016
On Monday, 26 September 2016 at 11:11:20 UTC, Joseph Rushton Wakeling wrote:
> On Saturday, 24 September 2016 at 07:20:25 UTC, Ilya Yaroshenko wrote:
>> Please help to improve the blog post during this weekend. It will be announced in the Reddit.
>
> One other place that a little more explanation could be helpful is this sentence:
>
> "It is written completely in D for LDC (LLVM D Compiler), without any assembler blocks."
>
> It would be nice to describe (if it can be summarized in a sentence) why Mir GLAS relies on LDC and/or LLVM, and what differences in outcome can be expected if one uses a different compiler (will it not work at all, or just not as well?).
>
> The broader topic of what compiler features Mir GLAS uses could be the topic of an entire blog post in its own right, and might be very interesting.

Updated:
Mir is LLVM-Accelerated Generic Numerical Library for Science and Machine Learning. It requires LDC (LLVM D Compiler) for compilation. Mir GLAS (Generic Linear Algebra Subprograms) has a single generic kernel for all CPU targets, all floating point types, and all complex types. It is written completely in D, without any assembler blocks. In addition, Mir GLAS Level 3 kernels are not unrolled and produce tiny binary code, so they put less pressure on the instruction cache in large applications.


September 26, 2016
On Monday, 26 September 2016 at 11:32:20 UTC, Ilya Yaroshenko wrote:
> Updated:
> Mir is LLVM-Accelerated Generic Numerical Library for Science and Machine Learning. It requires LDC (LLVM D Compiler) for compilation.

It doesn't really require LDC though, it just requires it to get good performance? I can still use DMD for quick testing?



September 26, 2016
On Monday, 26 September 2016 at 11:36:11 UTC, Edwin van Leeuwen wrote:
> On Monday, 26 September 2016 at 11:32:20 UTC, Ilya Yaroshenko wrote:
>> Updated:
>> Mir is LLVM-Accelerated Generic Numerical Library for Science and Machine Learning. It requires LDC (LLVM D Compiler) for compilation.
>
> It doesn't really require LDC though, it just requires it to get good performance? I can still use DMD for quick testing?

I would say something like:

For optimal performance it should be compiled using LDC.
September 26, 2016
On Monday, 26 September 2016 at 11:11:20 UTC, Joseph Rushton Wakeling wrote:
>
> The broader topic of what compiler features Mir GLAS uses could be the topic of an entire blog post in its own right, and might be very interesting.

I guess this is my terrain. I'll think about writing that blog post :)

Specific LDC features that I see in GLAS are:

- __traits(targetHasFeature, ...)  , see https://wiki.dlang.org/LDC-specific_language_changes#targetHasFeature

- @fastmath, see https://wiki.dlang.org/LDC-specific_language_changes#.40.28ldc.attributes.fastmath.29

- Modules ldc.simd and ldc.intrinsics.

- Extended allowed sizes for __vector (still very limited)

To get an idea of what is different for LDC and DMD, this PR removed support for DMD: https://github.com/libmir/mir/pull/347

-Johan
September 26, 2016
On Monday, 26 September 2016 at 11:46:19 UTC, Johan Engelen wrote:
> On Monday, 26 September 2016 at 11:11:20 UTC, Joseph Rushton Wakeling wrote:
>>
>> The broader topic of what compiler features Mir GLAS uses could be the topic of an entire blog post in its own right, and might be very interesting.
>
> I guess this is my terrain. I'll think about writing that blog post :)
>
> Specific LDC features that I see in GLAS are:
>
> - __traits(targetHasFeature, ...)  , see https://wiki.dlang.org/LDC-specific_language_changes#targetHasFeature
>
> - @fastmath, see https://wiki.dlang.org/LDC-specific_language_changes#.40.28ldc.attributes.fastmath.29
>
> - Modules ldc.simd and ldc.intrinsics.
>
> - Extended allowed sizes for __vector (still very limited)
>
> To get an idea of what is different for LDC and DMD, this PR removed support for DMD: https://github.com/libmir/mir/pull/347
>
> -Johan

Ah, I was not aware that DMD support was dropped completely. I think that is a real shame, and it makes it _much_ less likely that I will use mir in my own projects, let alone as a dependency in another library.
September 26, 2016
On Monday, 26 September 2016 at 11:56:39 UTC, Edwin van Leeuwen wrote:
> 
> Ah, I was not aware that DMD support was dropped completely. I think that is a real shame, and it makes it _much_ less likely that I will use mir in my own projects, let alone as a dependency in another library.

"_much_"
:'( :'(  Please don't write that to LDC devs.

September 26, 2016
On Monday, 26 September 2016 at 11:59:57 UTC, Johan Engelen wrote:
> On Monday, 26 September 2016 at 11:56:39 UTC, Edwin van Leeuwen wrote:
>> 
>> Ah, I was not aware that DMD support was dropped completely. I think that is a real shame, and it makes it _much_ less likely that I will use mir in my own projects, let alone as a dependency in another library.
>
> "_much_"
> :'( :'(  Please don't write that to LDC devs.

I love LDC, I just also tend to use DMD for testing and won't force people to use ldc over dmd if they want to use a library I build.
September 26, 2016
On Monday, 26 September 2016 at 11:36:11 UTC, Edwin van Leeuwen wrote:
> On Monday, 26 September 2016 at 11:32:20 UTC, Ilya Yaroshenko wrote:
>> Updated:
>> Mir is LLVM-Accelerated Generic Numerical Library for Science and Machine Learning. It requires LDC (LLVM D Compiler) for compilation.
>
> It doesn't really require LDC though, it just requires it to get good performance? I can still use DMD for quick testing?

No, LDC is required. I plan to update DUB for quick testing without binary compilation for DUB. The reason why DMD support was dropped is that it generates 10-20 times slower code for matrix multiplication.

My opinion is that D community is too small to maintain 3 compilers and we should move forward with LDC.

Ilya