[19.10 FEAT] Provide optimized libatlas libraries for different types of z Systems
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu on IBM z Systems |
Fix Released
|
Medium
|
Unassigned | ||
atlas (Ubuntu) |
Fix Released
|
Undecided
|
Skipper Bug Screeners |
Bug Description
libatlas is an highly optimized linear algebra library providing
algorithms which are being used as the base for important math
frameworks as e.g. Python NumPy. As such it will play a major role
for e.g. AI applications.
The performance of libatlas heavily depends on being optimized for
certain hardware levels. On IBM Z the introduction of the SIMD
instructions with z13 makes a huge difference for such
calculations. With the following machine (IBM z14) the SIMD
instruction set got substantially enhanced to support more data types
(single precision float) and can be expected to be subject of further
changes in the future.
In order to benefit from the instructions set improvements in libatlas
it is required to:
1. Compile libatlas with a GCC version being able to exploit the
instruction set enhancements and use the proper -march/-mtune
options for compilation.
2. Run the libatlas builtin tuning framework to determine which
implementation of certain algorithms works best for that particular
hardware level.
Doing this e.g. on IBM z14 with a libatlas version enabled for running
proper tuning on IBM Z provides a speedup of up to 5x compare to the
version currently provided with Ubuntu 18.04.
However, since the base level for Ubuntu currently is zEC12 no tuned
libatlas version for z13 or higher is part of the distro.
This request is about building libatlas with IBM provided tuning
results for z13 and z14 and install these in parallel to the default
zEC12 version. The well-established ELF capability depending load
mechanism in ld.so can be used to make sure that the proper version
will be picked at load time of the library. So it is basically a
matter of adjusting the build process of libatlas to enable creating
several binary variants of the library and place them in the proper
paths during installation.
Addl. information and tar balls will follow to provide a solution for this situation
tags: | added: architecture-s39064 bugnameltc-173368 severity-high targetmilestone-inin1904 |
Changed in ubuntu: | |
assignee: | nobody → Skipper Bug Screeners (skipper-screen-team) |
affects: | ubuntu → linux (Ubuntu) |
Changed in ubuntu-z-systems: | |
status: | New → Incomplete |
importance: | Undecided → Medium |
Changed in ubuntu-z-systems: | |
status: | Incomplete → Confirmed |
Changed in atlas (Ubuntu): | |
status: | Incomplete → New |
Changed in ubuntu-z-systems: | |
status: | Confirmed → Triaged |
information type: | Private → Public |
Changed in atlas (Ubuntu): | |
status: | New → Confirmed |
Changed in ubuntu-z-systems: | |
status: | Triaged → Confirmed |
Changed in ubuntu-z-systems: | |
status: | Incomplete → Triaged |
Changed in ubuntu-z-systems: | |
status: | Incomplete → Triaged |
tags: | added: patch |
Changed in ubuntu-z-systems: | |
status: | In Progress → Fix Committed |
Changed in ubuntu-z-systems: | |
status: | Fix Committed → Fix Released |
summary: |
- [19.04 FEAT] Provide optimized libatlas libraries for different types of + [19.10 FEAT] Provide optimized libatlas libraries for different types of z Systems |
I'm expecting for you to provide tarballs similar to:
$ ls debian/ archdefs/ s390x/* .bz2 archdefs/ s390x/IBMz964. tar.bz2 archdefs/ s390x/IBMz1264. tar.bz2
debian/
debian/
but for z13, and z14. Also please check the IBMz1264.tar.bz2 tarball if you can or want to change the performance there.
If there are any additional patches required to cherrypick from upstream, please point them out.
And any desired compiler flags, and configuration options.
For the tuned builds, we can use things like -march=z13 -O3 and so on, as mentioned in your bug report.