Re: DLanguage IntelliJ plugin released
On Fri, 2015-12-25 at 20:17 +, Kingsley via Digitalmars-d-announce wrote: > […] > > Debugging will be in July 2016 Or sooner if others chip in and help out? -- Russel. = Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder signature.asc Description: This is a digitally signed message part
Re: Three Cool Things about D
I have a full Jade template parser in Pegged that I just need to finish the d code gen part, could it be an interesting example? On 26 Dec 2015 20:10, "Andrei Alexandrescu via Digitalmars-d-announce" < digitalmars-d-announce@puremagic.com> wrote: > On 12/26/15 12:29 AM, Joakim wrote: > >> >> 1. Saying "Anywho" to segue to a new topic seems to be a verbal tic of >> Andrei's now. >> >> 2. It's claimed that scoped imports sped up D compilation: has this been >> measured? It would help if measurements were cited, as done for >> compile-time regex performance at the end. >> >> 3. It's better that you show usage examples of a PEGGED grammar now, as >> opposed to a previous talk that ended with the mixin slide, but I think >> it'd be best if you actually worked a toy example out and showed the >> generated D code, to really drive the point home. Even better if it >> wasn't something you could trivially write in D itself, like the >> arithmetic example you gave. >> > > Thanks for the feedback! I'll keep it in mind. -- Andrei >
Re: Three Cool Things about D
On 12/26/15 12:29 AM, Joakim wrote: 1. Saying "Anywho" to segue to a new topic seems to be a verbal tic of Andrei's now. 2. It's claimed that scoped imports sped up D compilation: has this been measured? It would help if measurements were cited, as done for compile-time regex performance at the end. 3. It's better that you show usage examples of a PEGGED grammar now, as opposed to a previous talk that ended with the mixin slide, but I think it'd be best if you actually worked a toy example out and showed the generated D code, to really drive the point home. Even better if it wasn't something you could trivially write in D itself, like the arithmetic example you gave. Thanks for the feedback! I'll keep it in mind. -- Andrei
Re: Official Announcement: 'Learning D' is Released
On Saturday, 26 December 2015 at 17:58:52 UTC, Guillaume Piolat wrote: On Tuesday, 1 December 2015 at 06:17:17 UTC, Mike Parker wrote: [...] Got "Learning D" as a present, still reading. I must say I didn't expect to learn much after the D Cookbook or TDPL. Wrong! The content matches perfectly with the stuff I hadn't understood well enough. Just like D it has a lot of value in small details, like "this" template parameters, detailing opEquals, details on align, DVM introduction... The chapter on Ranges is extremely helpful and should help overcome my "range anxiety". Other chapter are similarly thorough on Voldemort types or slices. Really appreciate the attention to detail that went into it. This is a fantastic book - thanks very much to Mike for all the effort and attention he put into the book :) - I have learned a lot from it.
Re: Official Announcement: 'Learning D' is Released
On Tuesday, 1 December 2015 at 06:17:17 UTC, Mike Parker wrote: Due to a minor mix up at the end of an otherwise enjoyable process, I wasn't notified that 'Learning D' was released on Nov 27. Today, I finally got that notification. Despite there already being a thread on the topic here in this forum, please forgive me for taking the opportunity to make my "official" announcement :) 'Learning D' is available from the publisher's website[1], where a sample[2] can also be viewed for those who want to try before they buy. It's also available from Amazon[3]. Got "Learning D" as a present, still reading. I must say I didn't expect to learn much after the D Cookbook or TDPL. Wrong! The content matches perfectly with the stuff I hadn't understood well enough. Just like D it has a lot of value in small details, like "this" template parameters, detailing opEquals, details on align, DVM introduction... The chapter on Ranges is extremely helpful and should help overcome my "range anxiety". Other chapter are similarly thorough on Voldemort types or slices. Really appreciate the attention to detail that went into it.
Re: Three Cool Things about D
On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote: I have a full Jade template parser in Pegged that I just need to finish the d code gen part, could it be an interesting example? Yes. How well-known is Jade? -- Andrei
2016Q1: std.blas
Hi, I will write GEMM and GEMV families of BLAS for Phobos. Goals: - code without assembler - code based on SIMD instructions - DMD/LDC/GDC support - kernel based architecture like OpenBLAS - 85-100% FLOPS comparing with OpenBLAS (100%) - tiny generic code comparing with OpenBLAS - ability to define user kernels - allocators support. GEMM requires small internal allocations. - @nogc nothrow pure template functions (depends on allocator) - optional multithreaded - ability to work with `Slice` multidimensional arrays when stride between elements in vector is greater than 1. In common BLAS matrix strides between rows or columns always equals 1. Implementation details: LDC all : very generic D/LLVM IR kernels. AVX/2/512/neon support is out of the box. DMD/GDC x86 : kernels for 8 XMM registers based on core.simd DMD/GDC x86_64: kernels for 16 XMM registers based on core.simd DMD/GDC other : generic kernels without SIMD instructions. AVX/2/512 support can be added in the future. References: [1] Anatomy of High-Performance Matrix Multiplication: http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf [2] OpenBLAS https://github.com/xianyi/OpenBLAS Happy New Year! Ilya
Re: 2016Q1: std.blas
Related questions about LDC http://forum.dlang.org/thread/lcrquwrehuezpxxvq...@forum.dlang.org
Re: So You Want To Write Your Own Language
On 25/12/15 04:25, Jakob Jenkov wrote: I think it depends a lot on your personal preference. For instance, I am always annoyed about immutable types being forced upon me (okay, they wouldn't be forced, but I'd have to work to get rid of them). I like mutable types. Yeah, we don't need to flip all the defaults, but something like safe/system has clearly the wrong default. Regarding the AST macros - I simply don't know enough about how that works in practice to have an opinion. Java doesn't have that stuff, so I don't know what I am missing :-) There's a lot of stuff that Java doesn't have ;). In theory, all the lowerings that the compiler already does could be implemented with AST macros. "scope" is lowered to try-catch-finally, "foreach" is lowered to a "for" loop and so on. -- /Jacob Carlborg
Re: DLanguage IntelliJ plugin released
On Saturday, 26 December 2015 at 07:17:01 UTC, Minas Mina wrote: Also, it seems that no [project name].sdl file is created for dub projects. I've fixed both of those issues and released
Re: So You Want To Write Your Own Language
On 12/26/2015 4:05 AM, Jacob Carlborg wrote: There's a lot of stuff that Java doesn't have ;). In theory, all the lowerings that the compiler already does could be implemented with AST macros. "scope" is lowered to try-catch-finally, "foreach" is lowered to a "for" loop and so on. Many of the lowerings require semantic information that is not available from ASTs.
Re: Three Cool Things about D
https://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/ Andrei Alexandrescu via Digitalmars-d-announcenapsal So, pro 26, 2015 v 8∶58 : On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote: I have a full Jade template parser in Pegged that I just need to finish the d code gen part, could it be an interesting example? Yes. How well-known is Jade? -- Andrei
Re: 2016Q1: std.blas
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko wrote: Hi, I will write GEMM and GEMV families of BLAS for Phobos. Goals: - code without assembler - code based on SIMD instructions - DMD/LDC/GDC support - kernel based architecture like OpenBLAS - 85-100% FLOPS comparing with OpenBLAS (100%) - tiny generic code comparing with OpenBLAS - ability to define user kernels - allocators support. GEMM requires small internal allocations. - @nogc nothrow pure template functions (depends on allocator) - optional multithreaded - ability to work with `Slice` multidimensional arrays when stride between elements in vector is greater than 1. In common BLAS matrix strides between rows or columns always equals 1. Implementation details: LDC all : very generic D/LLVM IR kernels. AVX/2/512/neon support is out of the box. DMD/GDC x86 : kernels for 8 XMM registers based on core.simd DMD/GDC x86_64: kernels for 16 XMM registers based on core.simd DMD/GDC other : generic kernels without SIMD instructions. AVX/2/512 support can be added in the future. References: [1] Anatomy of High-Performance Matrix Multiplication: http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf [2] OpenBLAS https://github.com/xianyi/OpenBLAS Happy New Year! Ilya I am absolutely thrilled! I've been using scid (https://github.com/kyllingstad/scid) and cblas (https://github.com/DlangScience/cblas) in a project, and I can't wait to see a smooth integration in the standard library. Couple questions: Why will the functions be nothrow? It seems that if you try to take the determinant of a 3x5 matrix, you should get an exception. By 'tiny generic code', you mean that DGEMM, SSYMM, CTRMM, etc. all become one function, basically? You mention that you'll have GEMM and GEMV in your features, do you think we'll get a more complete slice of BLAS/LAPACK in the future, like GESVD and GEES? If it's not in the plan, I'd be happy to work on re-tooling scid and cblas to feel like std.blas. (That is, mimic how you choose to represent a matrix, throw the same type of exceptions, etc. But still use external libraries.) Thanks again for this!
Re: Three Cool Things about D
On 26 Dec 2015 22:00, "Andrei Alexandrescu via Digitalmars-d-announce" < digitalmars-d-announce@puremagic.com> wrote: > > On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote: >> >> I have a full Jade template parser in Pegged that I just need to finish >> the d code gen part, could it be an interesting example? > > > Yes. How well-known is Jade? -- Andrei It is well known. I thought handlebars was used more but those github numbers say different. Vibe.d had a template engine called diet which is almost like Jade. It is also completed so you might prefer that as an example.
Re: 2016Q1: std.blas
On Sunday, 27 December 2015 at 05:23:27 UTC, Basile B. wrote: On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko wrote: - allocators support. GEMM requires small internal allocations. - @nogc nothrow pure template functions (depends on allocator) Do you mean using std.experimental.allocators and something like (IAllocator alloc) as template parameter ? If so this will mostly not work. Only Mallocator is really @nogc (on phobos master), and maybe only from the next DMD release point, so GDC and LDC not before monthes. Mallocator is only base to build various user defined allocators with building blocks like freelist. I hope to create std.blas module without Phobos and core.memory dependencies, so it can be used like C library. std.allocator usage is optionally. Ilya
Re: 2016Q1: std.blas
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko wrote: Hi, I will write GEMM and GEMV families of BLAS for Phobos. [...] Just want to thank you in advance. Can't wait!
Re: 2016Q1: std.blas
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko wrote: - allocators support. GEMM requires small internal allocations. - @nogc nothrow pure template functions (depends on allocator) Do you mean using std.experimental.allocators and something like (IAllocator alloc) as template parameter ? If so this will mostly not work. Only Mallocator is really @nogc (on phobos master), and maybe only from the next DMD release point, so GDC and LDC not before monthes.
Re: 2016Q1: std.blas
On Sunday, 27 December 2015 at 05:43:47 UTC, Charles McAnany wrote: On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko wrote: Hi, I will write GEMM and GEMV families of BLAS for Phobos. [...] References: [1] Anatomy of High-Performance Matrix Multiplication: http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf [2] OpenBLAS https://github.com/xianyi/OpenBLAS Happy New Year! Ilya I am absolutely thrilled! I've been using scid (https://github.com/kyllingstad/scid) and cblas (https://github.com/DlangScience/cblas) in a project, and I can't wait to see a smooth integration in the standard library. Couple questions: Why will the functions be nothrow? It seems that if you try to take the determinant of a 3x5 matrix, you should get an exception. Determinant is a part of LAPACK API, but not BLAS API. BTW, D scientific code should not throw exceptions if it is possible, because it can be integrated with C projects. By 'tiny generic code', you mean that DGEMM, SSYMM, CTRMM, etc. all become one function, basically? No, it is about portability and optimisation. OpenBLAS has huge code base it is written in assembler for various platforms. I want to make generalise optimisation logic. You mention that you'll have GEMM and GEMV in your features, do you think we'll get a more complete slice of BLAS/LAPACK in the future, like GESVD and GEES? LAPACK can be implemented as standalone package. I hope that I will have a time to work on it. Another way is to define new part of Phobos with sci.* suffix. If it's not in the plan, I'd be happy to work on re-tooling scid and cblas to feel like std.blas. (That is, mimic how you choose to represent a matrix, throw the same type of exceptions, etc. But still use external libraries.) It will be cool to see scid with Matrix type replaced by Slice!(2, double*) / Slice!(2, float*). I will argue to do not use any kind of Matrix type, but upcoming Slice https://github.com/D-Programming-Language/phobos/pull/3397. Slice!(2, double*) is generalisation of matrix type with two strides, one for rows and one for columns. std.blas can be implemented to support this feature out of the box. Slice!(2, double*) do not need to have transposed flag (transpose operator only swaps strides and lengths) and fortran_vs_C flag (column based vs row based) is deprecated rudiment. Ilya