Jump to page: 1 2 3
Thread overview
November 02
Glad to announce D 2.077.0.

This release comes with a new, more compact mangling, templated vector operations, reproducible dmd builds, and various fixes.
Thanks to everyone involved in this 👏.

http://downloads.dlang.org/releases/2.x/2.077.0/
http://dlang.org/changelog/2.077.0.html
The dlang.org website will get updated soon.

-Martin
November 03
On 11/02/2017 06:35 PM, Martin Nowak wrote:
> reproducible dmd builds,

Curiosity: What exactly was preventing this before? Order of source files altering the order of output? Something else?

Also, just musing...Regarding the matter of __TIME__(etc) breaking this guarantee (breaking it for obvious reasons). Seems to me it would be helpful to have compiler switches to force lexer symbols to specific values in order to bring at least some level of reproducablity even to projects that do use such symbols.
November 03
On Thursday, 2 November 2017 at 22:35:03 UTC, Martin Nowak wrote:
> Glad to announce D 2.077.0.
>
> This release comes with a new, more compact mangling, templated vector operations, reproducible dmd builds, and various fixes.
> Thanks to everyone involved in this 👏.
>
> http://downloads.dlang.org/releases/2.x/2.077.0/
> http://dlang.org/changelog/2.077.0.html
> The dlang.org website will get updated soon.
>
> -Martin

How should I compile my program to enable array vectorization?

I have tried dmd -march=native, -march=avx2 as changlog suggest but does not work

I have tried even just -march=native or -march=avx2 but still does not compile

Error: unrecognized switch '-march=avx2'

Error: unrecognized switch '-march=native'
November 03
On 11/3/2017 2:28 AM, Daniel Kozak wrote:
> How should I compile my program to enable array vectorization?

dmd doesn't do what is known as "auto-vectorization".

https://en.wikipedia.org/wiki/Automatic_vectorization

What D does is have vector data types, and when those are used vector instructions are generated for them.

https://dlang.org/spec/simd.html
November 03
On Friday, 3 November 2017 at 09:33:31 UTC, Walter Bright wrote:
> On 11/3/2017 2:28 AM, Daniel Kozak wrote:
>> How should I compile my program to enable array vectorization?
>
> dmd doesn't do what is known as "auto-vectorization".
>
> https://en.wikipedia.org/wiki/Automatic_vectorization
>
> What D does is have vector data types, and when those are used vector instructions are generated for them.
>
> https://dlang.org/spec/simd.html

For clarity, where the changeling says that GDC & LDC use auto-vectorization, that's actually happening with the array operations and core.simd is not required, correct?
November 03
On Friday, 3 November 2017 at 10:02:18 UTC, Mike Parker wrote:
> On Friday, 3 November 2017 at 09:33:31 UTC, Walter Bright wrote:
>> On 11/3/2017 2:28 AM, Daniel Kozak wrote:
>>> How should I compile my program to enable array vectorization?
>>
>> dmd doesn't do what is known as "auto-vectorization".
>>
>> https://en.wikipedia.org/wiki/Automatic_vectorization
>>
>> What D does is have vector data types, and when those are used vector instructions are generated for them.
>>
>> https://dlang.org/spec/simd.html
>
> For clarity, where the changeling says that GDC & LDC use auto-vectorization, that's actually happening with the array operations and core.simd is not required, correct?

Yes, at least with ldc.
November 03
On Friday, 3 November 2017 at 10:02:18 UTC, Mike Parker wrote:
> On Friday, 3 November 2017 at 09:33:31 UTC, Walter Bright wrote:
>> On 11/3/2017 2:28 AM, Daniel Kozak wrote:
>>> How should I compile my program to enable array vectorization?
>>
>> dmd doesn't do what is known as "auto-vectorization".
>>
>> https://en.wikipedia.org/wiki/Automatic_vectorization
>>
>> What D does is have vector data types, and when those are used vector instructions are generated for them.
>>
>> https://dlang.org/spec/simd.html
>
> For clarity, where the changeling says that GDC & LDC use auto-vectorization, that's actually happening with the array operations and core.simd is not required, correct?

OK, I'm a bit confused here. This gives the impression that the vectorization happens automatically with array operations:

"Array operations have been converted from dedicated assembly routines for some array operations to a generic template implementation for all array operations. This provides huge performance increases (2-4x higher throughput) for array operations that were not previously vectorized. Furthermore the implementation makes better use of vectorization even for short arrays to heavily reduce latency for some operations (up to 4x)."

Where does core.simd fit in?
November 03
On Friday, 3 November 2017 at 10:07:25 UTC, Mike Parker wrote:
> On Friday, 3 November 2017 at 10:02:18 UTC, Mike Parker wrote:
>> [...]
>
> OK, I'm a bit confused here. This gives the impression that the vectorization happens automatically with array operations:
>
> "Array operations have been converted from dedicated assembly routines for some array operations to a generic template implementation for all array operations. This provides huge performance increases (2-4x higher throughput) for array operations that were not previously vectorized. Furthermore the implementation makes better use of vectorization even for short arrays to heavily reduce latency for some operations (up to 4x)."
>
> Where does core.simd fit in?

See the linked druntime pull, core.simd is only imported for dmd:

https://github.com/dlang/druntime/pull/1891/files#diff-c17bbc97c8719ab709a4a54e2f6924ceR67
November 03
On Friday, 3 November 2017 at 09:28:37 UTC, Daniel Kozak wrote:
> How should I compile my program to enable array vectorization?

Array operations refers to https://dlang.org/spec/arrays.html#array-operations.

> I have tried dmd -march=native, -march=avx2 as changlog suggest

It's -mcpu= not -march= for dmd, my bad.
Unfortunate that dmd uses different switches than gcc.
If you're compiling for 64-bit, you'll get SSE2 by default.


November 03
On Friday, 3 November 2017 at 10:14:27 UTC, Joakim wrote:
> See the linked druntime pull, core.simd is only imported for dmd:
>
> https://github.com/dlang/druntime/pull/1891/files#diff-c17bbc97c8719ab709a4a54e2f6924ceR67

Ah, I see. I misunderstood Walter to be saying the user needed core.simd to get the vectorization. Thanks!
« First   ‹ Prev
1 2 3