www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Numerical age for D: Mir v0.18.0 is faster then OpenBLAS

reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Sep 23 2016
next sibling parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
Could someone with big reddit rating please post the link there? 
(maybe Andrei?)
Sep 23 2016
next sibling parent reply =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 09/23/2016 06:28 AM, Ilya Yaroshenko wrote:
 Could someone with big reddit rating please post the link there? (maybe
 Andrei?)
Shall we wait until Monday morning so that you have time to update the blog and it has more impact on Reddit? :) Ali
Sep 23 2016
next sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Friday, 23 September 2016 at 18:14:37 UTC, Ali Çehreli wrote:
 On 09/23/2016 06:28 AM, Ilya Yaroshenko wrote:
 Could someone with big reddit rating please post the link 
 there? (maybe
 Andrei?)
Shall we wait until Monday morning so that you have time to update the blog and it has more impact on Reddit? :) Ali
Yes, good idea. Will add Apple and Intel implementations.
Sep 23 2016
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 09/23/2016 02:14 PM, Ali Çehreli wrote:
 On 09/23/2016 06:28 AM, Ilya Yaroshenko wrote:
 Could someone with big reddit rating please post the link there? (maybe
 Andrei?)
Shall we wait until Monday morning so that you have time to update the blog and it has more impact on Reddit? :)
Yah awes
Sep 23 2016
prev sibling next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Sep 24 2016
parent reply Mike Parker <aldacron gmail.com> writes:
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.
Sep 24 2016
next sibling parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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.
Thank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.org
Sep 24 2016
parent reply Martin Nowak <code dawg.eu> writes:
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.
Sep 24 2016
next sibling parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Sep 24 2016
next sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Eigen 3.3 is required
Sep 24 2016
prev sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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 ..
Sep 24 2016
prev sibling parent Martin Nowak <code dawg.eu> writes:
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 ```
Sep 24 2016
prev sibling parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Sep 25 2016
parent reply Mike Parker <aldacron gmail.com> writes:
On Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko 
wrote:

 Mike, please use for Monday the link to blog post instead of 
 the forum post.
 Thank you
Absolutely.
Sep 25 2016
parent reply Mike Parker <aldacron gmail.com> writes:
On Sunday, 25 September 2016 at 13:10:53 UTC, Mike Parker wrote:
 On Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko 
 wrote:

 Mike, please use for Monday the link to blog post instead of 
 the forum post.
 Thank you
Absolutely.
https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/
Sep 26 2016
parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Monday, 26 September 2016 at 13:01:27 UTC, Mike Parker wrote:
 On Sunday, 25 September 2016 at 13:10:53 UTC, Mike Parker wrote:
 On Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko 
 wrote:

 Mike, please use for Monday the link to blog post instead of 
 the forum post.
 Thank you
Absolutely.
https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/
Thank you! Do you think the link should be announced in the news group? --Ilya
Sep 26 2016
parent reply Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Monday, 26 September 2016 at 13:30:31 UTC, Ilya Yaroshenko 
wrote:
 On Monday, 26 September 2016 at 13:01:27 UTC, Mike Parker wrote:
 On Sunday, 25 September 2016 at 13:10:53 UTC, Mike Parker 
 wrote:
 On Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko 
 wrote:

 Mike, please use for Monday the link to blog post instead of 
 the forum post.
 Thank you
Absolutely.
https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/
Thank you! Do you think the link should be announced in the news group? --Ilya
Oh, just saw the twitter post. Great!
Sep 26 2016
parent Mike Parker <aldacron gmail.com> writes:
On Monday, 26 September 2016 at 13:41:42 UTC, Ilya Yaroshenko 
wrote:
https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/
 Thank you! Do you think the link should be announced in the 
 news group? --Ilya
We usually post them in the threads where their content was announced. Doesn't appear to hurt anything.
 Oh, just saw the twitter post. Great!
And Facebook, too. https://www.facebook.com/dlang.org/posts/1405893729424304?notif_t=like¬if_id=1474895263820473
Sep 26 2016
prev sibling parent Mattcoder <no spam.com> writes:
On Friday, 23 September 2016 at 13:28:26 UTC, Ilya Yaroshenko 
wrote:
 Could someone with big reddit rating please post the link 
 there? (maybe Andrei?)
Don't forget hackernews!
Sep 26 2016
prev sibling next sibling parent reply Guillaume Piolat <first.last gmail.com> writes:
On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
wrote:
 Benchmark:
 http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
Nice but you should explain how to reproduce the results, if only to give more credit to the post.
Sep 23 2016
parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Friday, 23 September 2016 at 13:31:35 UTC, Guillaume Piolat 
wrote:
 On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
 wrote:
 Benchmark:
 http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
Nice but you should explain how to reproduce the results, if only to give more credit to the post.
The benchmark source code can be found here https://github.com/libmir/mir/blob/master/benchmarks/glas/gemm_report.d. The post will be updated with the link soon.
Sep 23 2016
prev sibling next sibling parent reply Joakim <dlang joakim.fea.st> writes:
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.
Nice work. The blog post is a bit short though: it might benefit from some usage samples showing how the equivalent D code is much nicer to write and read. The benchmark source shows that the C API calls are much longer than D, highlight that in the post. People don't just want speed and portability, they want ease of use. Show them that D will be easier.
Sep 23 2016
parent Walter Bright <newshound2 digitalmars.com> writes:
On 9/23/2016 7:30 AM, Joakim wrote:
 People don't just want speed and portability, they want ease of use.  Show them
 that D will be easier.
Fast code, fast!
Sep 24 2016
prev sibling next sibling parent reply John Colvin <john.loughran.colvin gmail.com> writes:
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
Looks excellent. I tested compared to Apple's Accelerate BLAS and got similar results. Environment variables to set single thread for cblas: for openBLAS: OPENBLAS_NUM_THREADS=1 for Accelerate (Apple): VECLIB_MAXIMUM_THREADS=1 for intel MKL: MKL_NUM_THREADS=1
Sep 23 2016
parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Friday, 23 September 2016 at 14:55:02 UTC, John Colvin 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
Looks excellent. I tested compared to Apple's Accelerate BLAS and got similar results. Environment variables to set single thread for cblas: for openBLAS: OPENBLAS_NUM_THREADS=1 for Accelerate (Apple): VECLIB_MAXIMUM_THREADS=1 for intel MKL: MKL_NUM_THREADS=1
Thank you, John. Will add them to the blog
Sep 23 2016
prev sibling next sibling parent reply jmh530 <john.michael.hall gmail.com> writes:
On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
wrote:
 Benchmark:
 http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
Great work.
Sep 23 2016
parent reply kinke <noone nowhere.com> writes:
On Friday, 23 September 2016 at 15:01:28 UTC, jmh530 wrote:
 On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
 wrote:
 Benchmark:
 http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
Great work.
+1. Please also provide the used compilers for reproduceability and credibility, e.g., its's not clear how OpenBLAS was compiled.
Sep 23 2016
parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Friday, 23 September 2016 at 16:48:33 UTC, kinke wrote:
 On Friday, 23 September 2016 at 15:01:28 UTC, jmh530 wrote:
 On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
 wrote:
 Benchmark:
 http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.html
Great work.
+1. Please also provide the used compilers for reproduceability and credibility, e.g., its's not clear how OpenBLAS was compiled.
clang and recent ldc beta. C compiler does not matter because OpenBLAS Haswell kernels was written in assembler. Mir support only LDC compiler.
Sep 23 2016
prev sibling next sibling parent reply Martin Nowak <code dawg.eu> writes:
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);
Sep 24 2016
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Sep 24 2016
next sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Sep 25 2016
prev sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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
Sep 25 2016
prev sibling next sibling parent reply Lodovico Giaretta <lodovico giaretart.net> writes:
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.
Sep 25 2016
next sibling parent Lodovico Giaretta <lodovico giaretart.net> writes:
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.
Sep 25 2016
prev sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
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!
Sep 25 2016
prev sibling parent reply Martin Tschierschke <mt smartdolphin.de> writes:
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
Sounds great! During my time studying mathematics - in the last century, one Dr. of the mathematical department has developed a C++ library as glue to some fast C libs using the possibility of operator overloading, to make the formulation of matrix algorithms quite beautiful. So would it be possible to get: // Performs: c := alpha a x b + beta c // glas is a pointer to a GlasContext glas.gemm(alpha, a, b, beta, c); transformed to something like: Matrix A,B; Real alpha,beta; Vektor c; c = alpha * A * B + beta * c; Maybe not for performance but for readability purpose? There was a recent thread about operator overloading but I didn't understood the problem. (sorry, still a D newbie). Regards mt.
Sep 26 2016
parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Monday, 26 September 2016 at 12:05:46 UTC, Martin Tschierschke 
wrote:
 On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko 
 wrote:
 [...]
Sounds great! During my time studying mathematics - in the last century, one Dr. of the mathematical department has developed a C++ library as glue to some fast C libs using the possibility of operator overloading, to make the formulation of matrix algorithms quite beautiful. So would it be possible to get: // Performs: c := alpha a x b + beta c // glas is a pointer to a GlasContext glas.gemm(alpha, a, b, beta, c); transformed to something like: Matrix A,B; Real alpha,beta; Vektor c; c = alpha * A * B + beta * c; Maybe not for performance but for readability purpose? There was a recent thread about operator overloading but I didn't understood the problem. (sorry, still a D newbie). Regards mt.
Yes, this is possible. But, first we need a more low level interface. It will help to extend the Mir library and to write bindings for other languages (Julia, Python, R).
Sep 26 2016