[Openmp-commits] [PATCH] D11301: Remove the __kmp_invoke_microtask() that relies on libffi

Cownie, James H james.h.cownie at intel.com
Tue Jul 21 02:01:02 PDT 2015

>> As I understand it from Jim, icc does not even need this capability any more (acting more like Clang does now)

No, Intel compilers continue to generate code that uses the interface that passes multiple arguments, so *do* require the ability to pack and unpack multiple arguments.

-- Jim

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

-----Original Message-----
From: openmp-commits-bounces at cs.uiuc.edu [mailto:openmp-commits-bounces at cs.uiuc.edu] On Behalf Of hfinkel at anl.gov
Sent: Monday, July 20, 2015 6:03 PM
To: Peyton, Jonathan L; hfinkel at anl.gov
Cc: setton.debora at gmail.com; cbergstrom at pathscale.com; openmp-commits at dcs-maillist2.engr.illinois.edu; amara.emerson at arm.com
Subject: Re: [Openmp-commits] [PATCH] D11301: Remove the __kmp_invoke_microtask() that relies on libffi

hfinkel added a comment.

In http://reviews.llvm.org/D11301#208269, @jlpeyton wrote:

> > Why is libffi a depdendency at all?
> Because the first ARM port had it in there.
> > What if it's not installed?
> Then the linking step of the build will fail.
> > What's used on OSX and Windows?
> __kmp_invoke_microtask in z_Linux_asm.s and z_Windows_NT-586_asm.asm respectively.

That's correct, the generic mechanism used by PowerPC, etc. is faster.

The underlying issue is that X86 needs this generic va_args-like dispatching to handle legacy icc-compiled code. Clang, however, only generates code requiring a fixed (small) number of arguments. As I understand it from Jim, icc does not even need this capability any more (acting more like Clang does now), and in any case, we don't need the extra complexity for non-X86 targets.

> > If it's performance impacting should a more portable altenternative be explored?



> I believe if anything, it will only improve performance since calls to libffi are avoided.


> > I haven't looked at the code, but is this a way to allow for scalable OMP 3 tasks?



> It is the low-level mechanism to invoke implicit (from omp parallel) and explicit (from omp task) tasks.

>  It does not relate to scalable tasking algorithms.



Openmp-commits mailing list
Openmp-commits at dcs-maillist2.engr.illinois.edu
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-commits mailing list