Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
August 02, 2019 How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
As part of my GSoC project, I wanted to use SIMD intrinsics. But I could not find a way to write cross-compiler code. That includes core.simd, but also intel-intrinsics. Specifically intel-intrinsics is a great library, but it could not be used in GDC (at least I did not find a way) and it seems LDC focused. So, I wrote a mini SIMD module [1]. This is not very general as it was targeted only for the Dmem* utilities. But then I thought, why not make such a module in the druntime? In the link, you can see for example a simple store function. Also, it shows the best I got as far as how to answer the question "Is SIMD supported?" across compilers. [1] https://github.com/dlang/druntime/pull/2687/files#diff-c2fcd73761ae6659ef91245ce1195b6dR70 |
August 02, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefanos Baziotis | On Friday, 2 August 2019 at 14:56:58 UTC, Stefanos Baziotis wrote:
> Specifically intel-intrinsics is a great library, but it could not be used in GDC (at least I did not find a way) and it seems LDC focused.
>
Hello,
The reason is that no one stepped up to add this support for GDC intel-intrinsics, but it is on the roadmap for next year. I can't contribute to D OSS all day, since I need to put out products made with D too ; so users of intel-intrinsics have to be patient or contribute themselves.
Do not underestimate the sheer amount of work needed to make "cross-compiler SIMD module".
|
August 02, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Guillaume Piolat | On Friday, 2 August 2019 at 20:38:37 UTC, Guillaume Piolat wrote: > > Hello, > > The reason is that no one stepped up to add this support for GDC intel-intrinsics, but it is on the roadmap for next year. I can't contribute to D OSS all day, since I need to put out products made with D too ; > Hello Guillaume, Don't take this as criticism to intel-intrinsics. On the contrary, I mention it here and there as it is the best SIMD library for D I know (apart from core.simd). However, I feel like this should be part of druntime core and not an external library since core.simd already exists but is not cross-compiler. > Do not underestimate the sheer amount of work needed to make "cross-compiler SIMD module". I agree, although I probably don't know all the hurdles since I have not made one. I proposed the idea and I'm willing to put time on it, if the community wants it. It doesn't necessarily mean that I will be able to do it myself. I invite people who have more experience (like you) to give advice and / or help. > so users of intel-intrinsics have to be patient or contribute themselves. If the community is not positive on that, then my plan is to contribute to intel-intrinsics. Best, Stefanos |
August 03, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefanos Baziotis | On Friday, 2 August 2019 at 14:56:58 UTC, Stefanos Baziotis wrote: > But then I thought, why not make such a module in the druntime? Johan suggests implementing some small core.simd subset (load/storeUnaligned, prefetch) in the LDC and GDC druntime flavours instead: https://github.com/ldc-developers/ldc/issues/3121 |
August 03, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to kinke | On Saturday, 3 August 2019 at 00:13:09 UTC, kinke wrote:
>
> Johan suggests implementing some small core.simd subset (load/storeUnaligned, prefetch) in the LDC and GDC druntime flavours instead:
> https://github.com/ldc-developers/ldc/issues/3121
Yes, that could be done as well.
|
August 03, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefanos Baziotis | On Friday, 2 August 2019 at 20:59:04 UTC, Stefanos Baziotis wrote:
>
> However, I feel like this should be part of druntime core and not an external
> library since core.simd already exists but is not cross-compiler.
Well yes what you did makes a lot of sense, since it's druntime that will have to implement memcpy/memset/etc. So there is indeed a need for something in druntime.
(intel-intrinsics is Boost-licensed and one can use any part of it, but it's not like is has been "approved" in terms of DUB popularity (which I feel is a necessary first step, along with GDC support)).
|
August 03, 2019 Re: How about a cross-compiler SIMD module? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Guillaume Piolat | On Saturday, 3 August 2019 at 10:01:37 UTC, Guillaume Piolat wrote: > On Friday, 2 August 2019 at 20:59:04 UTC, Stefanos Baziotis > > Well yes what you did makes a lot of sense, since it's druntime that will have to implement memcpy/memset/etc. So there is indeed a need for something in druntime. > Apart from memset, memcpy etc., I think that if we are to have a simd module, that makes sense to be cross-compiler. On the other hand, people seem to like the idea to add them separately on LDC and GDC versions. I don't know. > (intel-intrinsics is Boost-licensed and one can use any part of it, but it's not like is has been "approved" in terms of DUB popularity (which I feel is a necessary first step, along with GDC support)). Well, it seems like a sane way to do SIMD. I hope it goes well. Stefanos |
Copyright © 1999-2021 by the D Language Foundation