InBetweenNames / gentooLTO

A Gentoo Portage configuration for building with -O3, Graphite, and LTO optimizations
GNU General Public License v2.0
570 stars 96 forks source link

Use of Intel® oneAPI DPC++/C++ Compiler (ICX and ICPX) #819

Open OpenSourceAnarchist opened 2 years ago

OpenSourceAnarchist commented 2 years ago

Hi all,

It's been awhile since I attempted setting up Gentoo with this overlay, but I was wondering if, for those with Intel CPUs, has anyone attempted to install and use Intel's new C/C++ compiler which is now based on LLVM? You can find a standalone release here: https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp

It's free to use, but is proprietary and requires accepting a EULA. However, they claim anywhere from 15-60% performance improvements compared to GCC or even Clang... I think this might be worth looking into, especially if it can be a drop-in replacement for Clang (it supports all of Clang's flags, if passed after -Xclang). All optimizations can be enabled with the -fast flag (see the reference documentation). You may also want to enable -falign-functions=32 and to look at the reference documentation for more specific compiler and linker options (-fast enables IPO/LTO), but if you want to try other optimization levels, you can mix and match flags like -O3 -ipo4, which should be equivalent to -O3 -flto=4. Take a look at the full Reference Guide!

I wish it was open-source, as that would certainly make its adoption easier, but it still seems worth exploring if their numbers are accurate and generalize outside of benchmarks.

I guess I'm wondering what to change in make.conf to enable this globally, and whether more advanced users (than me) would be willing to temporarily try this compiler out system-wide. I assume other flags might be needed to ensure compatibility with GCCisms (pragmas), similar to packages that need help compiling with Clang.

I don't have access to AMD hardware, but it would be interesting to have users of this repo compare performance of the same program compiled with gcc, clang, AOCC, and icx/icpx. Perhaps we can get a Wiki page going similar to the one that already exists for AOCC, but for icx/icpx.

ms178 commented 2 years ago

Currently that compiler doesn't work with an unpatched Meson, I've filed (https://github.com/mesonbuild/meson/issues/8113) with them in 2020 and a patch is floating around to get it working, but upstream demanded some re-work and that stalled this work until this date.

TheMBL09898 commented 2 years ago

It's cool but I doubt that I would want a propietary compiler on my system