digitalmars.D.announce - Numerical age for D: Mir v0.18.0 is faster then OpenBLAS
- Ilya Yaroshenko (11/11) Sep 23 2016 Mir is LLVM-accelerated Generic Numerical Library for Science and
- Ilya Yaroshenko (2/2) Sep 23 2016 Could someone with big reddit rating please post the link there?
- =?UTF-8?Q?Ali_=c3=87ehreli?= (4/6) Sep 23 2016 Shall we wait until Monday morning so that you have time to update the
- Ilya Yaroshenko (2/9) Sep 23 2016 Yes, good idea. Will add Apple and Intel implementations.
- Andrei Alexandrescu (2/7) Sep 23 2016 Yah awes
- Andrei Alexandrescu (3/5) Sep 24 2016 I will; better yet let Mike do it (cc'd). Don't forget: 9 AM New York
- Mike Parker (3/9) Sep 24 2016 Roger that.
- Ilya Yaroshenko (3/13) Sep 24 2016 Thank you. Lets wait until Martin submit benchmark results too
- Martin Nowak (4/6) Sep 24 2016 Working on it in an hour, with such a strong headline we should
- Ilya Yaroshenko (11/17) Sep 24 2016 Cool! Eigen data was added. Netlib cblas (not blas) required to
- Ilya Yaroshenko (3/22) Sep 24 2016 Eigen 3.3 is required
- Ilya Yaroshenko (5/24) Sep 24 2016 Edit:
- Martin Nowak (58/64) Sep 24 2016 Number somewhat confirmed w/ a Skylake Core i7-6700 and DDR4 RAM,
- Ilya Yaroshenko (4/14) Sep 25 2016 Mike, please use for Monday the link to blog post instead of the
- Mike Parker (3/6) Sep 25 2016 Absolutely.
- Mike Parker (2/9) Sep 26 2016 https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_m...
- Ilya Yaroshenko (3/14) Sep 26 2016 Thank you! Do you think the link should be announced in the news
- Ilya Yaroshenko (3/19) Sep 26 2016 Oh, just saw the twitter post. Great!
- Mike Parker (7/11) Sep 26 2016 On Monday, 26 September 2016 at 13:41:42 UTC, Ilya Yaroshenko
- Mattcoder (3/5) Sep 26 2016 Don't forget hackernews!
- Guillaume Piolat (4/6) Sep 23 2016 Nice but you should explain how to reproduce the results, if only
- Ilya Yaroshenko (5/12) Sep 23 2016 The benchmark source code can be found here
- Joakim (8/15) Sep 23 2016 Nice work. The blog post is a bit short though: it might benefit
- Walter Bright (2/4) Sep 24 2016 Fast code, fast!
- John Colvin (8/19) Sep 23 2016 Looks excellent. I tested compared to Apple's Accelerate BLAS and
- Ilya Yaroshenko (2/25) Sep 23 2016 Thank you, John. Will add them to the blog
- jmh530 (3/5) Sep 23 2016 Great work.
- kinke (3/9) Sep 23 2016 +1. Please also provide the used compilers for reproduceability
- Ilya Yaroshenko (4/15) Sep 23 2016 clang and recent ldc beta. C compiler does not matter because
- Martin Nowak (22/26) Sep 24 2016 Still time for a few edits of that post?
- Andrei Alexandrescu (6/33) Sep 24 2016 Yes, this is important.
- Ilya Yaroshenko (4/10) Sep 25 2016 Added
- Ilya Yaroshenko (4/10) Sep 25 2016 Added
- Lodovico Giaretta (4/15) Sep 25 2016 Typo in the title: `than` must be used for comparisons; `then` is
- Lodovico Giaretta (3/22) Sep 25 2016 Same error twice in the conclusion.
- Ilya Yaroshenko (3/22) Sep 25 2016 Thanks!
- Martin Tschierschke (22/33) Sep 26 2016 Sounds great!
- Ilya Yaroshenko (5/28) Sep 26 2016 Yes, this is possible. But, first we need a more low level
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
Could someone with big reddit rating please post the link there? (maybe Andrei?)
Sep 23 2016
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
On Friday, 23 September 2016 at 18:14:37 UTC, Ali Çehreli wrote:On 09/23/2016 06:28 AM, Ilya Yaroshenko wrote:Yes, good idea. Will add Apple and Intel implementations.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
On 09/23/2016 02:14 PM, Ali Çehreli wrote:On 09/23/2016 06:28 AM, Ilya Yaroshenko wrote:Yah awesCould 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? :)
Sep 23 2016
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
On Saturday, 24 September 2016 at 12:59:33 UTC, Andrei Alexandrescu wrote:On 9/23/16 9:28 AM, Ilya Yaroshenko wrote:Roger that.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
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:Thank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.orgOn 9/23/16 9:28 AM, Ilya Yaroshenko wrote:Roger that.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
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.orgWorking on it in an hour, with such a strong headline we should avoid mistakes.
Sep 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: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 blasThank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.orgWorking on it in an hour, with such a strong headline we should avoid mistakes.
Sep 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:Eigen 3.3 is requiredOn Saturday, 24 September 2016 at 13:18:45 UTC, Ilya Yaroshenko wrote: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 blasThank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.orgWorking on it in an hour, with such a strong headline we should avoid mistakes.
Sep 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:Edit: cmake -DCMAKE_BUILD_TYPE=Release -DEIGEN_TEST_AVX=ON -DEIGEN_TEST_FMA=ON ..On Saturday, 24 September 2016 at 13:18:45 UTC, Ilya Yaroshenko wrote: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 blasThank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.orgWorking on it in an hour, with such a strong headline we should avoid mistakes.
Sep 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: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 ```Thank you. Lets wait until Martin submit benchmark results too https://forum.dlang.org/post/mkmjxwilpvsggobakhke forum.dlang.orgWorking on it in an hour, with such a strong headline we should avoid mistakes.
Sep 24 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:Mike, please use for Monday the link to blog post instead of the forum post. Thank youOn 9/23/16 9:28 AM, Ilya Yaroshenko wrote:Roger that.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 25 2016
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 youAbsolutely.
Sep 25 2016
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:https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/Mike, please use for Monday the link to blog post instead of the forum post. Thank youAbsolutely.
Sep 26 2016
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:Thank you! Do you think the link should be announced in the news group? --IlyaOn Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko wrote:https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/Mike, please use for Monday the link to blog post instead of the forum post. Thank youAbsolutely.
Sep 26 2016
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:Oh, just saw the twitter post. Great!On Sunday, 25 September 2016 at 13:10:53 UTC, Mike Parker wrote:Thank you! Do you think the link should be announced in the news group? --IlyaOn Sunday, 25 September 2016 at 11:54:46 UTC, Ilya Yaroshenko wrote:https://www.reddit.com/r/programming/comments/54kg6v/numeric_age_for_d_mir_glas_is_faster_than/Mike, please use for Monday the link to blog post instead of the forum post. Thank youAbsolutely.
Sep 26 2016
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/We usually post them in the threads where their content was announced. Doesn't appear to hurt anything.Thank you! Do you think the link should be announced in the news group? --IlyaOh, 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
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
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.htmlNice but you should explain how to reproduce the results, if only to give more credit to the post.
Sep 23 2016
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: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.Benchmark: http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.htmlNice but you should explain how to reproduce the results, if only to give more credit to the post.
Sep 23 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.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
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
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, IlyaLooks 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
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:Thank you, John. Will add them to the blogMir 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, IlyaLooks 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
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.htmlGreat work.
Sep 23 2016
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:+1. Please also provide the used compilers for reproduceability and credibility, e.g., its's not clear how OpenBLAS was compiled.Benchmark: http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.htmlGreat work.
Sep 23 2016
On Friday, 23 September 2016 at 16:48:33 UTC, kinke wrote:On Friday, 23 September 2016 at 15:01:28 UTC, jmh530 wrote:clang and recent ldc beta. C compiler does not matter because OpenBLAS Haswell kernels was written in assembler. Mir support only LDC compiler.On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote:+1. Please also provide the used compilers for reproduceability and credibility, e.g., its's not clear how OpenBLAS was compiled.Benchmark: http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/glas-gemm-benchmark.htmlGreat work.
Sep 23 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.htmlStill 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
On 09/24/2016 04:37 PM, Martin Nowak wrote:On Friday, 23 September 2016 at 13:25:30 UTC, Ilya Yaroshenko wrote: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). AndreiMir 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.htmlStill 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
On Saturday, 24 September 2016 at 20:53:54 UTC, Andrei Alexandrescu wrote:On 09/24/2016 04:37 PM, Martin Nowak wrote:Added[...]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).Changed
Sep 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:Added[...]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).Changed
Sep 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, IlyaTypo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.
Sep 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:Same error twice in the conclusion.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, IlyaTypo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.
Sep 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:Thanks!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, IlyaTypo in the title: `than` must be used for comparisons; `then` is for temporal/causal consequence.
Sep 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, IlyaSounds 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
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: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).[...]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