This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libmvec requires x86?


On Mon, 2015-12-21 at 12:58 -0600, Timothy Pearson wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA224
> 
> All,
> 
> Are there currently any plans to port libmvec to architectures other than
> x86?  I spent a rather fruitless day attempting to vectorize a floating
> point calculation loop on POWER8 before realizing that libmvec is x86
> only.  We cannot use modern x86 hardware for internal security reasons,
> and it came as something of a surprise that relatively advanced features
> of glibc are only supported on x86, even though functionally equivalent
> SIMD capabilities exist on other architectures (e,g, POWER8).
> 
We (PowerPC) have been waiting for libmvec to stabilize and as
Adhemerval has pointed out, powerpc already has existing solution using
the IBM Mathematical Acceleration Subsystem (MASS) libraries.

The MASS library is available without cost from
http://www-01.ibm.com/software/awdtools/mass/linux/mass-linux.html

We have direct GCC support for -mveclibabi=mass starting with GCC-4.6

This should vectorize your loop.

> Would it be possible to get write access to
> https://sourceware.org/glibc/wiki/libmvec so that I can at least add a
> warning to not try to use libmvec on non-x86 architectures?
> 
> I'd be willing to try to port libmvec to POWER8 (or provide access to a VM
> on the POWER8 hardware for any developer(s) willing to work on it), but I
> don't really know where to start.  What exactly is forcing libmvec to x86
> only right now?  Missing assembly functions or something deeper?
> 
We welcome all volunteers ;)

The current PowerISA-2.07 (POWER8) documentation is available from:
http://openpowerfoundation.org/

The Vector intrinsics are documented in the GCC docs:
https://gcc.gnu.org/onlinedocs/gcc/PowerPC-AltiVec_002fVSX-Built-in-Functions.html#PowerPC-AltiVec_002fVSX-Built-in-Functions

Also in the appendix of the Power Architecture 64-Bit ELF V2 ABI
Specification

You might also be interested in the "POWER8 Processor Userâs Manual for
the Single-Chip Module" which contains details like instruction pipeline
latency.

Both are also available from http://openpowerfoundation.org/

Finally you might be interested in then IBM SDK for Linux on Power.
https://www-304.ibm.com/webapp/set2/sas/f/lopdiags/sdklop.html

The nice feature is that it includes a integrated cross compiler and
QEMU for Power8 that you can install on a Linux X86_64 workstation.

Also available without charge.

I do most of my Vector code development in this environement.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]