Discussion:
[Beowulf] C++ compilers and assembly
John Hearns via Beowulf
2018-09-10 03:50:24 UTC
Permalink
Chris Samuels recent post reminds me.
I went to a fascinating and well delivered talk by Jason Hearne McGuiness

https://www.meetup.com/ACCULondon/events/253570550/
https://accu.org/index.php/accu_branches/accu_london
Slides are here:
https://github.com/acculondon/2018-September

I would encourage everyone to give this presentation at least a browse.
Jason has done a lot of work in comparing the assembler code emitted
by C++ compilers for simple statement blocks. Even within the g++
series there are wildly different assembler sequences emitted. And of
course differences between Intel and Clang.
I would have naively assumed that within g+++ at least as improvements
are made then there would be some commonality - ie an evolution. But I
would be wrong.

Jason work in HFT so the default path loaded in IF statements (for
instance) is important for low latency.
Jason also did a lot of work in comparing performance before and after
the Spectre/Meltdown fixes. There is a huge amount of work gone into
that.

One other takeaway - the choice of Linux OS is critical. Really.
Common wisdom is that OS choice accounts for approx. 4% of performance
difference.
Not so.
There isa big difference between CentOS 6 and 7 (7 being better) and
Ubuntu does not shine at all well on his FIX benchmarks. Gentoo does
well - Jason being a fan of Gentoo.
As I remember on these benchmarks OS choice can affect results by 20% !!!!

Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?

John Hearns
_______________________________________________
Beowulf mailing list, ***@beowulf.org sponsored by Penguin Computing
To change your subscription (digest mode or unsubscribe) visit http://w
Benson Muite
2018-09-10 08:18:55 UTC
Permalink
Thanks. This is interesting. Possibly also of interest:
https://clearlinux.org/
Not for HPC, but some aspects look useful.
Post by John Hearns via Beowulf
Chris Samuels recent post reminds me.
I went to a fascinating and well delivered talk by Jason Hearne McGuiness
https://www.meetup.com/ACCULondon/events/253570550/
https://accu.org/index.php/accu_branches/accu_london
https://github.com/acculondon/2018-September
I would encourage everyone to give this presentation at least a browse.
Jason has done a lot of work in comparing the assembler code emitted
by C++ compilers for simple statement blocks. Even within the g++
series there are wildly different assembler sequences emitted. And of
course differences between Intel and Clang.
I would have naively assumed that within g+++ at least as improvements
are made then there would be some commonality - ie an evolution. But I
would be wrong.
Jason work in HFT so the default path loaded in IF statements (for
instance) is important for low latency.
Jason also did a lot of work in comparing performance before and after
the Spectre/Meltdown fixes. There is a huge amount of work gone into
that.
One other takeaway - the choice of Linux OS is critical. Really.
Common wisdom is that OS choice accounts for approx. 4% of performance
difference.
Not so.
There isa big difference between CentOS 6 and 7 (7 being better) and
Ubuntu does not shine at all well on his FIX benchmarks. Gentoo does
well - Jason being a fan of Gentoo.
As I remember on these benchmarks OS choice can affect results by 20% !!!!
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
John Hearns
_______________________________________________
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
_______________________________________________
Beowulf mailing list, ***@beowulf.org sponsored by Penguin Computing
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org
Prentice Bisbal via Beowulf
2018-10-18 21:16:31 UTC
Permalink
I know I'm a bit late to this conversation. Been too busy to lurk here
Post by John Hearns via Beowulf
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
Lightweight operating systems for HPC is definitely a thing the IBM Blue
Gene systems used a lightweight kernel called CNK (Compute Node Kernel).
While not based on Linux, it used a subset of the Linux system call API
for its own system calls portability reasons. It was single-tasking,
since for an HPC job on a system like the Blue Gene (no node sharing
between jobs), there was no need to manage multiple tasks.

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

I don't know much about Compute Node Linux (CNL), which is used on Cray
systems. I believe it is a stripped down version of Linux, but not sure
how stripped down it is.

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

Here's some links to more information/other lightweight kernels, like
Puma and Catamount, in no particular order.

https://www.cresta-project.eu/images/WhitePapers/cresta_whitepaper_2_2014.pdf

https://ieeexplore.ieee.org/document/323279

https://www.researchgate.net/publication/228816883_Software_architecture_of_the_light_weight_kernel_Catamount

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

Prentice
Post by John Hearns via Beowulf
Chris Samuels recent post reminds me.
I went to a fascinating and well delivered talk by Jason Hearne McGuiness
https://www.meetup.com/ACCULondon/events/253570550/
https://accu.org/index.php/accu_branches/accu_london
https://github.com/acculondon/2018-September
I would encourage everyone to give this presentation at least a browse.
Jason has done a lot of work in comparing the assembler code emitted
by C++ compilers for simple statement blocks. Even within the g++
series there are wildly different assembler sequences emitted. And of
course differences between Intel and Clang.
I would have naively assumed that within g+++ at least as improvements
are made then there would be some commonality - ie an evolution. But I
would be wrong.
Jason work in HFT so the default path loaded in IF statements (for
instance) is important for low latency.
Jason also did a lot of work in comparing performance before and after
the Spectre/Meltdown fixes. There is a huge amount of work gone into
that.
One other takeaway - the choice of Linux OS is critical. Really.
Common wisdom is that OS choice accounts for approx. 4% of performance
difference.
Not so.
There isa big difference between CentOS 6 and 7 (7 being better) and
Ubuntu does not shine at all well on his FIX benchmarks. Gentoo does
well - Jason being a fan of Gentoo.
As I remember on these benchmarks OS choice can affect results by 20% !!!!
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
John Hearns
_______________________________________________
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
_______________________________________________
Beowulf mailing list, ***@beowulf.org sponsored by Penguin Computing
To change your subscription (digest mode or unsubscribe) visit http://www.beow
Brian Dobbins
2018-10-18 21:34:49 UTC
Permalink
For anyone interested in C++ compiler differences, the 'Compiler Explorer'
( http://www.godbolt.org ) is an indispensable resource.

Basically, you can write some code, select some different compilers (and
optimization flags), and look at the assembly code and compare windows
side-by-side. I used to have a bunch of cool examples bookmarked, but
can't find them right now. Here's a brief article / interview with Matt
with a bit more:
https://blog.jetbrains.com/clion/2017/10/godbolting-your-cpp-code/

Cheers,
- Brian




On Thu, Oct 18, 2018 at 3:17 PM Prentice Bisbal via Beowulf <
Post by Prentice Bisbal via Beowulf
I know I'm a bit late to this conversation. Been too busy to lurk here
Post by John Hearns via Beowulf
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
Lightweight operating systems for HPC is definitely a thing the IBM Blue
Gene systems used a lightweight kernel called CNK (Compute Node Kernel).
While not based on Linux, it used a subset of the Linux system call API
for its own system calls portability reasons. It was single-tasking,
since for an HPC job on a system like the Blue Gene (no node sharing
between jobs), there was no need to manage multiple tasks.
https://en.wikipedia.org/wiki/CNK_operating_system
I don't know much about Compute Node Linux (CNL), which is used on Cray
systems. I believe it is a stripped down version of Linux, but not sure
how stripped down it is.
https://en.wikipedia.org/wiki/Compute_Node_Linux
Here's some links to more information/other lightweight kernels, like
Puma and Catamount, in no particular order.
https://www.cresta-project.eu/images/WhitePapers/cresta_whitepaper_2_2014.pdf
https://ieeexplore.ieee.org/document/323279
https://www.researchgate.net/publication/228816883_Software_architecture_of_the_light_weight_kernel_Catamount
https://en.wikipedia.org/wiki/Lightweight_Kernel_Operating_System
Prentice
Post by John Hearns via Beowulf
Chris Samuels recent post reminds me.
I went to a fascinating and well delivered talk by Jason Hearne McGuiness
https://www.meetup.com/ACCULondon/events/253570550/
https://accu.org/index.php/accu_branches/accu_london
https://github.com/acculondon/2018-September
I would encourage everyone to give this presentation at least a browse.
Jason has done a lot of work in comparing the assembler code emitted
by C++ compilers for simple statement blocks. Even within the g++
series there are wildly different assembler sequences emitted. And of
course differences between Intel and Clang.
I would have naively assumed that within g+++ at least as improvements
are made then there would be some commonality - ie an evolution. But I
would be wrong.
Jason work in HFT so the default path loaded in IF statements (for
instance) is important for low latency.
Jason also did a lot of work in comparing performance before and after
the Spectre/Meltdown fixes. There is a huge amount of work gone into
that.
One other takeaway - the choice of Linux OS is critical. Really.
Common wisdom is that OS choice accounts for approx. 4% of performance
difference.
Not so.
There isa big difference between CentOS 6 and 7 (7 being better) and
Ubuntu does not shine at all well on his FIX benchmarks. Gentoo does
well - Jason being a fan of Gentoo.
As I remember on these benchmarks OS choice can affect results by 20%
!!!!
Post by John Hearns via Beowulf
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
John Hearns
_______________________________________________
To change your subscription (digest mode or unsubscribe) visit
http://www.beowulf.org/mailman/listinfo/beowulf
_______________________________________________
To change your subscription (digest mode or unsubscribe) visit
http://www.beowulf.org/mailman/listinfo/beowulf
Gerald Henriksen
2018-10-19 00:37:49 UTC
Permalink
Post by John Hearns via Beowulf
Lastly Jason mentioned IncludeOS http://www.includeos.org/
these gusy are implementing something I have tossed about on this list
in the past - running applications in a lightweight OS without all the
overhead of a multitasking system.
I dont know that much about it - is anyone from that company on the list?
The founder/one of the founders participated in a pocast 2 years ago:

http://cppcast.com/2016/07/alfred-bratterud/
_______________________________________________
Beowulf mailing list, ***@beowulf.org sponsored by Penguin Computing
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.o
Loading...