September 24, 2016
On Saturday, 24 September 2016 at 17:42:10 UTC, Ilya Yaroshenko wrote:
> On Saturday, 24 September 2016 at 16:55:04 UTC, Martin Nowak wrote:
>> On Saturday, 24 September 2016 at 13:18:45 UTC, Ilya Yaroshenko wrote:
>>> Thank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke@forum.dlang.org
>>
>> Working on it in an hour, with such a strong headline we should avoid mistakes.
>
> Cool! Eigen data was added. Netlib cblas (not blas) required to link Eigen library (Eigen -> Fortran BLAS -> Netlib CBLAS -> D code).
>
> For Eigen:
>
> mkdir build_dir
>
> cd build_dir
>
> cmake -DCMAKE_BUILD_TYPE=Release -DEIGEN_TEST_AVX=ON -DEIGEN_TEST_FMA=ON build_dir
>
> make blas
Edit:
cmake -DCMAKE_BUILD_TYPE=Release -DEIGEN_TEST_AVX=ON -DEIGEN_TEST_FMA=ON ..
September 24, 2016
On Saturday, 24 September 2016 at 16:55:04 UTC, Martin Nowak wrote:
> On Saturday, 24 September 2016 at 13:18:45 UTC, Ilya Yaroshenko wrote:
>> Thank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke@forum.dlang.org
>
> Working on it in an hour, with such a strong headline we should avoid mistakes.

Number somewhat confirmed w/ a Skylake Core i7-6700 and DDR4 RAM, slight advantage for Intel.

For Intel MKL 2017.0.098
```
m=n=k,GLAS(thread_count=1),OpenBLAS(thread_count=?)
10,20,20
20,32,40
30,38.5714,60
40,64,80
50,59.5238,73.5294
60,69.6774,65.4545
70,63.5185,72.2105
80,84.6281,82.5806
90,74.0102,81
100,85.8369,81.6327
200,98.8264,98.401
300,102.079,95.7277
500,108.15,110.727
600,110.334,112.301
700,109.637,112.022
800,110.13,111.309
900,110.491,110.983
1000,109.634,111.374
1200,108.937,111.677
1400,109.837,111.249
1600,108.661,112.19
1800,109.626,112.124
2000,109.748,111.693
```
And OpenBLAS 0.2.18 (openblas-0.2.18-5.fc24.x86_64)
```
m=n=k,GLAS(thread_count=1),OpenBLAS(thread_count=?)
10,20,10
20,32,20
30,36,24.5455
40,64,37.6471
50,58.1395,40.3226
60,69.6774,46.9565
70,63.5185,45.1316
80,84.6281,58.5143
90,74.7692,53.6029
100,85.8369,62.3053
200,99.3789,80.8489
300,103.211,89.478
500,108.169,98.5416
600,110.367,101.678
700,109.49,101.634
800,110.014,100.123
900,110.266,101.126
1000,109.964,100.336
1200,109.113,101.378
1400,110.003,101.907
1600,108.596,101.66
1800,109.734,102.706
2000,109.742,103.167
```
September 24, 2016
On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:
> Mir is LLVM-accelerated Generic Numerical Library for Science and Machine Learning.
>
> Benchmark:
> http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html

Still time for a few edits of that post?

Please emphasize the equally impressive comparison of the code necessary for the matrix multiplication.

glas.gemm(alpha, a, b, beta, c);

vs.

cblas.gemm(
    cblas.Order.RowMajor,
    cblas.Transpose.NoTrans,
    cblas.Transpose.NoTrans,
    cast(cblas.blasint) m,
    cast(cblas.blasint) n,
    cast(cblas.blasint) k,
    & alpha,
    a.ptr,
    cast(cblas.blasint) a.stride,
    b.ptr,
    cast(cblas.blasint) b.stride,
    & beta,
    d.ptr,
    cast(cblas.blasint) d.stride);
September 24, 2016
On 09/24/2016 04:37 PM, Martin Nowak wrote:
> On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:
>> Mir is LLVM-accelerated Generic Numerical Library for Science and
>> Machine Learning.
>>
>> Benchmark:
>> http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
>>
>
> Still time for a few edits of that post?
>
> Please emphasize the equally impressive comparison of the code necessary
> for the matrix multiplication.
>
> glas.gemm(alpha, a, b, beta, c);
>
> vs.
>
> cblas.gemm(
>     cblas.Order.RowMajor,
>     cblas.Transpose.NoTrans,
>     cblas.Transpose.NoTrans,
>     cast(cblas.blasint) m,
>     cast(cblas.blasint) n,
>     cast(cblas.blasint) k,
>     & alpha,
>     a.ptr,
>     cast(cblas.blasint) a.stride,
>     b.ptr,
>     cast(cblas.blasint) b.stride,
>     & beta,
>     d.ptr,
>     cast(cblas.blasint) d.stride);

Yes, this is important.

Also, I'm not sure whether the title of this thread is intended to be the title of the blog. In that case, "Numerical age" -> "Numeric age" (which btw sounds pretty cool).


Andrei
September 25, 2016
On Saturday, 24 September 2016 at 20:53:54 UTC, Andrei Alexandrescu wrote:
> On 09/24/2016 04:37 PM, Martin Nowak wrote:
>>     [...]
>
> Yes, this is important.

Added

> Also, I'm not sure whether the title of this thread is intended to be the title of the blog. In that case, "Numerical age" -> "Numeric age" (which btw sounds pretty cool).
>

Changed
September 25, 2016
On Saturday, 24 September 2016 at 20:53:54 UTC, Andrei Alexandrescu wrote:
> On 09/24/2016 04:37 PM, Martin Nowak wrote:
>>     [...]
>
> Yes, this is important.

Added

> Also, I'm not sure whether the title of this thread is intended to be the title of the blog. In that case, "Numerical age" -> "Numeric age" (which btw sounds pretty cool).
>

Changed

September 25, 2016
On Saturday, 24 September 2016 at 13:13:47 UTC, Mike Parker wrote:
> On Saturday, 24 September 2016 at 12:59:33 UTC, Andrei Alexandrescu wrote:
>> On 9/23/16 9:28 AM, Ilya Yaroshenko wrote:
>>> Could someone with big reddit rating please post the link there? (maybe
>>> Andrei?)
>>
>> I will; better yet let Mike do it (cc'd). Don't forget: 9 AM New York Time is the optimum. -- Andrei
>
> Roger that.

Mike, please use for Monday the link to blog post instead of the forum post.
Thank you

September 25, 2016
On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:
> Mir is LLVM-accelerated Generic Numerical Library for Science and Machine Learning.
>
> Benchmark:
> http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
>
> Mir v0.18.0 release notes:
> https://github.com/libmir/mir/releases/tag/v0.18.0
> The release includes Mir's D Foundation GSoC project.
>
> Do not forget to star the project:
> https://github.com/libmir/mir
>
> Best regards,
> Ilya

Typo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.
September 25, 2016
On Sunday, 25 September 2016 at 12:11:53 UTC, Lodovico Giaretta wrote:
> On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:
>> Mir is LLVM-accelerated Generic Numerical Library for Science and Machine Learning.
>>
>> Benchmark:
>> http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
>>
>> Mir v0.18.0 release notes:
>> https://github.com/libmir/mir/releases/tag/v0.18.0
>> The release includes Mir's D Foundation GSoC project.
>>
>> Do not forget to star the project:
>> https://github.com/libmir/mir
>>
>> Best regards,
>> Ilya
>
> Typo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.

Same error twice in the conclusion.
September 25, 2016
On Sunday, 25 September 2016 at 12:11:53 UTC, Lodovico Giaretta wrote:
> On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:
>> Mir is LLVM-accelerated Generic Numerical Library for Science and Machine Learning.
>>
>> Benchmark:
>> http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
>>
>> Mir v0.18.0 release notes:
>> https://github.com/libmir/mir/releases/tag/v0.18.0
>> The release includes Mir's D Foundation GSoC project.
>>
>> Do not forget to star the project:
>> https://github.com/libmir/mir
>>
>> Best regards,
>> Ilya
>
> Typo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.

Thanks!