www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - LDC 1.5.0-beta1

reply kinke <noone nowhere.com> writes:
Hi everyone,

on behalf of the LDC team, I'm glad to announce the first beta 
for LDC 1.5.0. The highlights of version 1.5 in a nutshell:

* Based on D 2.075.1.
* Polished LLVM 5.0 support (now also used for the prebuilt 
release packages).
* ~25 new advanced command-line options for codegen fine-tuning.
* Bugfixes, as always.

Full release log and downloads: 
https://github.com/ldc-developers/ldc/releases/tag/v1.5.0-beta1

Thanks to everybody contributing!
Oct 22
next sibling parent Ilya Yaroshenko <ilyayaroshenko gmail.com> writes:
On Sunday, 22 October 2017 at 09:34:56 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.5.0. The highlights of version 1.5 in a nutshell:

 * Based on D 2.075.1.
 * Polished LLVM 5.0 support (now also used for the prebuilt 
 release packages).
 * ~25 new advanced command-line options for codegen fine-tuning.
 * Bugfixes, as always.

 Full release log and downloads: 
 https://github.com/ldc-developers/ldc/releases/tag/v1.5.0-beta1

 Thanks to everybody contributing!
Thanks!
Oct 22
prev sibling next sibling parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Sunday, 22 October 2017 at 09:34:56 UTC, kinke wrote:
 Full release log and downloads: 
 https://github.com/ldc-developers/ldc/releases/tag/v1.5.0-beta1

 Thanks to everybody contributing!
Thanks!
Oct 22
prev sibling next sibling parent Guillaume Piolat <first.last gmail.com> writes:
On Sunday, 22 October 2017 at 09:34:56 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.5.0. The highlights of version 1.5 in a nutshell:

 * Based on D 2.075.1.
 * Polished LLVM 5.0 support (now also used for the prebuilt 
 release packages).
 * ~25 new advanced command-line options for codegen fine-tuning.
 * Bugfixes, as always.

 Full release log and downloads: 
 https://github.com/ldc-developers/ldc/releases/tag/v1.5.0-beta1

 Thanks to everybody contributing!
Wow, sounds interesting!
Oct 22
prev sibling next sibling parent Johan <j j.nl> writes:
On Sunday, 22 October 2017 at 09:34:56 UTC, kinke wrote:
 Hi everyone,

 on behalf of the LDC team, I'm glad to announce the first beta 
 for LDC 1.5.0.
Jon Degenhardt did some nice LTO testing, see: https://github.com/ldc-developers/ldc/issues/2380 -Johan
Oct 23
prev sibling parent reply Guillaume Piolat <contact spam.com> writes:
Some measurements for some audio processing. Output are identical 
across compilers (30 measures).


### LDC 1.2.0

Results:
  * minimum time: 440 ms => 48.024 x real-time
  * median  time: 443 ms => 47.6987 x real-time
  * average time: 444.233 ms => 47.5663 x real-time

### LDC 1.3.0

Results:
  * minimum time: 439 ms => 48.1334 x real-time
  * median  time: 442 ms => 47.8067 x real-time
  * average time: 442.6 ms => 47.7419 x real-time

### LDC 1.4.0

Results:
  * minimum time: 436 ms => 48.4646 x real-time
  * median  time: 439 ms => 48.1334 x real-time
  * average time: 439.767 ms => 48.0494 x real-time


### LDC 1.5.0-b1

Results:
  * minimum time: 429 ms => 49.2553 x real-time
  * median  time: 432 ms => 48.9133 x real-time
  * average time: 433.3 ms => 48.7665 x real-time


Results are only precise up to the ~0.5% range.

So approx. +2.5% relative improvement in LDC 1.5.0-b1 vs LDC 1.2, 
free lunch is always good.

The number of flags in -help-hidden seems very large, I haven't 
tried any yet (apart from -enable-unsafe-fp-math which seems to 
lose speed like -ffast-math, for this benchmark).
Oct 23
next sibling parent reply Johan Engelen <j j.nl> writes:
On Monday, 23 October 2017 at 21:26:46 UTC, Guillaume Piolat 
wrote:
 Some measurements for some audio processing. Output are 
 identical across compilers (30 measures).
Guillaume, can you try with building your own LTO version of the standard library and do new measurements? Something like this should work: ``` ldc-build-runtime --reset --dFlags="-flto=full" BUILD_SHARED_LIBS=OFF ldc2 -your-normal-compile-flags -flto=full -L-L./ldc-build-runtime.tmp/lib ``` Use `--dFlags="-flto=full;-ar="` for now if you are using macOS (will not be needed with the next beta). (you can try with `-flto=thin` too for much faster link times) Cheers, Johan
Oct 23
parent reply Guillaume Piolat <first.last gmail.com> writes:
On Monday, 23 October 2017 at 22:06:43 UTC, Johan Engelen wrote:
 Guillaume, can you try with building your own LTO version of 
 the standard library and do new measurements?

 Something like this should work:
 ```
 ldc-build-runtime --reset --dFlags="-flto=full" 
 BUILD_SHARED_LIBS=OFF

 ldc2 -your-normal-compile-flags -flto=full 
 -L-L./ldc-build-runtime.tmp/lib
 ```

 Use `--dFlags="-flto=full;-ar="` for now if you are using macOS 
 (will not be needed with the next beta).

 (you can try with `-flto=thin` too for much faster link times)

 Cheers,
   Johan
So far my benchmark scripts are Windows-only so no LTO is available AFAIK. I can work on providing such measures (or any flags you want) on OSX in the future.
Oct 23
parent kinke <kinke gmx.net> writes:
On Monday, 23 October 2017 at 22:43:15 UTC, Guillaume Piolat 
wrote:
 So far my benchmark scripts are Windows-only so no LTO is 
 available AFAIK. I can work on providing such measures (or any 
 flags you want) on OSX in the future.
I performed an extremely rudimentary -flto=full test on Win64 for a hello-world program yesterday, linking manually via LLD 5.0 (lld-link.exe), which worked (and saved 1 KB for the executable ;)).
Oct 24
prev sibling parent reply Nicholas Wilson <iamthewilsonator hotmail.com> writes:
On Monday, 23 October 2017 at 21:26:46 UTC, Guillaume Piolat 
wrote:
 Some measurements for some audio processing. Output are 
 identical across compilers (30 measures).


 ### LDC 1.2.0

 Results:
  * minimum time: 440 ms => 48.024 x real-time
  * median  time: 443 ms => 47.6987 x real-time
  * average time: 444.233 ms => 47.5663 x real-time

 ### LDC 1.3.0

 Results:
  * minimum time: 439 ms => 48.1334 x real-time
  * median  time: 442 ms => 47.8067 x real-time
  * average time: 442.6 ms => 47.7419 x real-time

 ### LDC 1.4.0

 Results:
  * minimum time: 436 ms => 48.4646 x real-time
  * median  time: 439 ms => 48.1334 x real-time
  * average time: 439.767 ms => 48.0494 x real-time


 ### LDC 1.5.0-b1

 Results:
  * minimum time: 429 ms => 49.2553 x real-time
  * median  time: 432 ms => 48.9133 x real-time
  * average time: 433.3 ms => 48.7665 x real-time


 Results are only precise up to the ~0.5% range.

 So approx. +2.5% relative improvement in LDC 1.5.0-b1 vs LDC 
 1.2, free lunch is always good.

 The number of flags in -help-hidden seems very large, I haven't 
 tried any yet (apart from -enable-unsafe-fp-math which seems to 
 lose speed like -ffast-math, for this benchmark).
would it help to have them grouped/filterable by category? e.g. $ldc2 -help-hidden=category common sanitiser asan tsan cache disable enable debug optimisation compiler-diaganostics ... $ldc2 -help-hidden=asan -asan-always-slow-path ...
Oct 23
parent Guillaume Piolat <contact spam.com> writes:
On Monday, 23 October 2017 at 22:57:00 UTC, Nicholas Wilson wrote:
 would it help to have them grouped/filterable by category?
 e.g.
 $ldc2 -help-hidden=category
Perhaps, but the sheer amount of customizability makes you wish for a superoptimizer for compiler flags (hard to do this generically though).
Oct 24