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

Hal Finkel hfinkel at anl.gov
Mon Sep 16 08:29:09 CDT 2013


----- Original Message -----
> On 2013-09-15, at 23:09 , Hal Finkel <hfinkel at anl.gov> wrote:
> 
> > 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.
> 
> 
> Hal
> 
> Which version of SLEEF are you using for this (2.80?) Are you using
> it in its source form, or did you have to modify it? Or is it
> included converted to .ll files?

It is based on 2.80, but with a relatively large patch (among other things, SLEEF has some implementation assumptions about how vector comparisons are implemented which are not true with QPX, so almost all of the function implementations have modifications).

> 
> SLEEF seems to contain some code duplication (e.g. double vs. float
> versions), and some minor inconsistencies between these. I also
> notice that e.g. exp() is quite efficient, whereas exp2() -- which
> should be simpler to implement -- is much less efficient. Would it
> be worthwhile to fork SLEEF e.g. on Bitbucket, so that there is a
> common improved version?

The patchset is on the trac page (in the SRPMs now). I'll also upload the forked version to my github page so we can track it there as well.

Thanks again,
Hal

> 
> -erik
> 
> --
> Erik Schnetter <schnetter at gmail.com>
> http://www.perimeterinstitute.ca/personal/eschnetter/
> 
> My email is as private as my paper mail. I therefore support
> encrypting
> and signing email messages. Get my PGP key from http://pgp.mit.edu/.
> 
> 

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


More information about the llvm-bgq-discuss mailing list