[Openmp-dev] PPC64 patch from Intel's fourth cmake patch

Cownie, James H james.h.cownie at intel.com
Wed Aug 20 03:48:38 PDT 2014


> As you've discovered, clang-omp currently does not use the arbitrary-length-parameter-list aspect of the microtasks.

Indeed, and I don't expect it too. IMO the way the Intel compiler does it by passing a pointer argument for each 
reference into the parent stack is unpleasant. 

I have canvased internally to change it, but without success. ("We've done it like that for 15 years, why would we change?")

If you stick with a single argument to the outlined routine you should be able to eliminate a bunch of code in the rutime 
for creating and copying the argument vector and (as a result) have no need to write some of that code in assembler.

As (I think) you're pointing out, you do need different code to handle disambiguating references so that 
you can vectorize. If you have code something like this

float a[SIZE];
float b[SIZE];

// initialize b 
#pragma omp parallel for
   for (int i=1; i<SIZE; i++)
      a[i] = b[i-1];
 
Once you outline you either have something like
void outlinedFunc (float * restrict a, float * restrict b)
    // compute local slice into low, high
    for (i=low; i<high; i++)
        a[i]=b[i-1];

or like this

struct localState {
    float a[SIZE];
    float b[SIZE];
};

void outlinedFunc( localState * args )
    // compute local slice into low, high
    for (i=low; i<high; i++)
        args->a[i]=args->b[i-1];

To vectorize you need to be able to prove to yourself that a and b don’t overlap here.
That doesn't seem too hard (fields in a struct can't overlap), but is certainly different from the other case.

-- Jim

James Cownie <james.h.cownie at intel.com>
SSG/DPD/TCAR (Technical Computing, Analyzers and Runtimes)
Tel: +44 117 9071438

-----Original Message-----
From: Hal Finkel [mailto:hfinkel at anl.gov] 
Sent: Wednesday, August 20, 2014 1:30 AM
To: Carlo Bertolli
Cc: Cownie, James H; Michael Wong; openmp-dev at dcs-maillist2.engr.illinois.edu; C. Bergström; Alexey Bataev
Subject: Re: [Openmp-dev] PPC64 patch from Intel's fourth cmake patch

----- Original Message -----
> From: "Carlo Bertolli" <cbertol at us.ibm.com>
> To: "C. Bergström" <cbergstrom at pathscale.com>
> Cc: "Hal Finkel" <hfinkel at anl.gov>, "James H Cownie" <james.h.cownie at intel.com>, "Michael Wong"
> <michaelw at ca.ibm.com>, openmp-dev at dcs-maillist2.engr.illinois.edu
> Sent: Wednesday, August 6, 2014 12:59:42 PM
> Subject: Re: [Openmp-dev] PPC64 patch from Intel's fourth cmake patch
> 
> 
> 
> Hi,
> 
> No apologies needed - I am glad that you highlighted these issues and 
> that you helped making the patch stronger.
> Let me see what I can do about the imlementation of 
> kmp__invoke_microtask.

Thanks for looking into this. As you've discovered, clang-omp currently does not use the arbitrary-length-parameter-list aspect of the microtasks. I've cc'd Alexey here, and perhaps he can describe why. I suspect that using function parameters directly, instead of putting everything into structures, will be easier on the IPA (and more efficient -- although it is not clear how important that is relative to the dispatching overhead).

 -Hal

> 
> 
> Thanks
> 
> -- Carlo
> 
> Inactive hide details for "C. Bergström" ---08/06/2014 01:37:30 
> PM---On 08/ 6/14 11:27 PM, Carlo Bertolli wrote: >"C. Bergström"
> ---08/06/2014 01:37:30 PM---On 08/ 6/14 11:27 PM, Carlo Bertolli
> wrote: >
> 
> From: "C. Bergström" <cbergstrom at pathscale.com>
> To: Carlo Bertolli/Watson/IBM at IBMUS
> Cc: Hal Finkel <hfinkel at anl.gov>, "Cownie, James H"
> <james.h.cownie at intel.com>, Michael Wong <michaelw at ca.ibm.com>, 
> "openmp-dev at dcs-maillist2.engr.illinois.edu"
> <openmp-dev at dcs-maillist2.engr.illinois.edu>
> Date: 08/06/2014 01:37 PM
> Subject: Re: [Openmp-dev] PPC64 patch from Intel's fourth cmake patch
> 
> 
> 
> 
> On 08/ 6/14 11:27 PM, Carlo Bertolli wrote:
> > 
> > Hi C. Bergström,
> > 
> > My answers below interspersed with your comments.
> > 
> Apologies - My comments were meant to be general and your patch just 
> made some fugly areas more visible. Hopefully this clears up the 
> confusion. For our BGQ (IBM Power7 A2) work I certainly appreciate 
> this.
> 
> Thanks
> 
> 
> 

--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
---------------------------------------------------------------------
Intel Corporation (UK) Limited
Registered No. 1134945 (England)
Registered Office: Pipers Way, Swindon SN3 1RJ
VAT No: 860 2173 47

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.




More information about the Openmp-dev mailing list