openhpc / submissions

OpenHPC Component Submissions Project
8 stars 2 forks source link

Clang+LLVM 4.0+ (including compiler-rt, libc++, libunwind, libomp) #18

Closed rengolin closed 7 years ago

rengolin commented 7 years ago

Software Name

Clang+LLVM


Public URL

http://llvm.org/


Technical Overview

Clang is a (mostly) drop-in alternative to GCC, offering full compatibility with GCC-compiled libraries and objects as well as a few additional benefits:

  1. Better/different warnings, error messages, allowing developers to find real bugs in their code that is not always visible in GCC.
  2. More sanitizers: sanitizers are first developed in LLVM, then ported to GCC.
  3. A new C++ library (libc++) with different performance profiles and without old C++ legacy breakage (GCC's ABI 5). It may be slower, it may be faster, it's up to users to test and pick the best for them.
  4. A new OpenMP library, which is significantly faster than GOMP, especially for >32core machines, where GOMP crashes back to single-thread performance and libomp continues the asymptotic behaviour.

Latest stable version number

4.0.0, with a new release every ~6 months.


Open-source license type

UIUC+MIT (BSD-like), but moving to Apache 2.0 soon. http://llvm.org/docs/DeveloperPolicy.html#license


Relationship to component?


Build system

Does the current build system support staged path installations? For example: make install DESTIR=/tmp/foo (or equivalent)


Does component run in user space or are administrative credentials required?


Does component require post-installation configuration.


If component is selected, are you willing and able to collaborate with OpenHPC maintainers during the integration process?


Does the component include test collateral (e.g. regression/verification tests) in the publicly shipped source?

Everything under "test" and "unittest" directories in the various repositories are "make check-all" tests, which won't be bundled in the binary tarball.

There is an additional "test-suite" repository that has additional tests (which can also be checked from the same Git server). The test-suite has multiple licenses, not all BSD-like, so if we are to include it, it should be in a different request.


Does the component have additional software dependencies (beyond compilers/MPI) that are not part of standard Linux distributions?

http://llvm.org/docs/GettingStarted.html#software

There are additional dependencies for the test-suite (virtualenv, bison, groff, gawk, tclsh, chrpath). Again, different licenses, different request.


Does the component include online or installable documentation?

http://llvm.org/docs/


[Optional]: Would you like to receive additional review feedback by email?

pawosm-arm commented 7 years ago

You may find this relevant: https://build.openhpc.community/package/show/home:pawel:branches:OpenHPC:1.3:Update1:Factory/llvm-compilers

rengolin commented 7 years ago

@pawosm-arm w00t! :)

koomie commented 7 years ago

Thank you for the submission (and thanks to @pawosm-arm for initial build efforts). The TSC has recommended acceptance of this component into a future release and a new tracker has been created in https://github.com/openhpc/ohpc/issues/470 for completion of the integration work.

The initial integration plan is to make this available as a standalone additional compiler family (ie. users can easily switch between gcc/clang environments), but not to provide the full complement of downstream library builds.

rengolin commented 7 years ago

Thanks Koomie! Standalone is the best way forward. Replacing compilers or having more than one is a whole different beast.