[Llvm-bgq-discuss] bgclang r190771-20130914 on vesta/mira (with OpenMP)

Hal Finkel hfinkel at anl.gov
Sun Sep 15 22:09:10 CDT 2013


Hello everyone,

I've updated our bgclang install on vesta and mira to r190771-20130914. Several important new features are included in this build:

 1. OpenMP support (version 3.1, with a few version 4 features). This is the product of a new (and ongoing) partnership between ALCF and Pathscale, making use of the OpenMP implementation for Clang (and runtime library) generously made available by Intel. Only minimal tuning of the runtime library for the BG/Q has been done at this time, and so you may see scaling issues above 1 thread per core. Use -fopenmp when both compiling and linking.

 2. Math function autovectorization (making use of the bundled SLEEF library). The following functions can currently be autovectorized in loops: acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, cos, cosh, exp, exp10, exp2, expm1, log, log10, log1p, pow, sin, sinh, tan, tanh, along with the single-precision versions. Also sqrt (and division), but only with -ffast-math. For sin, cos, tan, asin, acos, atan, atan2, log faster (but slightly less accurate) variants are used with -ffast-math. -fmath-no-errno is now the default setting.

 3. SLP (a.k.a. basic-block) autovectorization has switched from the aggressive to the regular implementation. The aggressive implementation was something I wrote, and upstream development is now concentrating on the regular SLP implementation. I've seen some regressions from this change, but overall, the performance is better.

 4. Optimized code generation for unaligned QPX vector loads. These now use the permutation-based instruction sequence, and the performance of loops with unaligned data should now be better.

 5. The builds are now done with --enable-shared and REQUIRES_RTTI=1 (and the RPMs are still relocatable because I've used the rpath $ORIGIN feature); I understand that this is required by some LLVM-using projects, such as POCL.

 6. And last but not least, a smattering of instruction scheduling and other bugfixes and improvements, both local and from upstream.

For those maintaining their own installs, RPMs (and SRPMs) are available on the trac page: https://trac.alcf.anl.gov/projects/llvm-bgq

Finally, specifically regarding vesta/mira, I've switched to using the RPMs locally. Most of the contents of /home/projects/llvm has been moved into a subdirectory named old. If this causes anyone any problems, please let me know.

Happy coding!

 -Hal

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-bgq-discuss mailing list