HKG15-203: TCWG 2015 Roadmap Review
---------------------------------------------------
Speaker: Ryan Arnold
Date: February 10, 2015
---------------------------------------------------
★ Session Summary ★
The TCWG 2015 Roadmap Discussion presentation will discuss both the Linaro LLVM Toolchain Roadmap and the Linaro GNU Toolchain Roadmap for 2015. We will discuss the ongoing tasks, as well as features in development. We will also present the schedule for the binary and source releases in 2015.
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250783
Video: https://www.youtube.com/watch?v=kXNforT03F0
Etherpad: http://pad.linaro.org/p/hkg15-203
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
Unlocking the Future of AI Agents with Large Language Models
HKG15-203: TCWG 2015 Roadmap Review
1. Presented by
Date
Event
HKG15-203: TCWG 2015
Roadmap Review
Ryan S. Arnold
Engineering Manager
Linaro Toolchain Working Group
February 10, 2015
Linaro Connect HKG15
2. TCWG 2015 Roadmap Review
● TCWG Priorities
● High Level Roadmaps - GNU & LLVM
● ONGOING efforts
○ Linaro Toolchain Products
○ GNU Toolchain
○ LLVM Toolchain
● GNU Toolchain Development - Specifics
● LLVM Toolchain Development - Specifics
3. 2015 TCWG Priorities
1. GNU Toolchain Development
2. Toolchain Releases
3. LLVM Development
4. Member Requests
Strategy: Align development effort toward 80%
development and 20% products.
Methodology: Be more efficient through automation.
4. LC-HKG15 LC-next
Oct ‘14 Nov ‘14 Dec ‘14 Jan ‘15 Feb ‘15 Oct ‘15Apr ‘15 Jun ‘15 Aug ‘15 Apr ‘16 Oct ‘16 Apr ‘17 Oct ‘17
Benchmark Automation Enablement
ILP32 Toolchain Integration
GCC Thread Sanitizer for Aarch64
Upstream NEON Intrinsics Tests
Libm Performance Investigations
GDB for Android on ARM64
Multiple GDB watchpoint support for ARM
Watchpoint Support for Aarch64
GDB Testsuite Coverage Improvements
Aarch32 Binary Toolchains
x86_64 Binary Toolchains
Native Binary Toolchains
GCC Modularization
Non-stop debugging for Aarch64
Linaro Toolchain Quarterly Binary Releases,
Monthly Linaro GCC Source releases (including backports),
Release Validation,
Periodic GNU Toolchain Package Releases (glibc, binutils, GDB),
ONGOING: GNU Toolchain Maintenance (bug fixing),
Monthly GCC Benchmarking,
GCC Performance Development,
System Library Performance,
Toolchain Validation Automation Improvements
GNU Toolchain Roadmap long-term due to minimal investment
5. LLVM Toolchain RoadmapLC-HKG15 LC-next
Oct ‘14 Nov ‘14 Dec ‘14 Jan ‘15 Feb ‘15 Oct ‘15Apr ‘15 Jun ‘15 Aug ‘15 Apr ‘16 Oct ‘16 Apr ‘17 Oct ‘17
ONGOING:LLVM community releases, LLVM community maintenance, LLVM Buildbots, LLVM Libraries,
LLVM Linux Kernel
LLVM Linker (LLD) for ELF on Aarch64 and Aarch32
LLDB for Aarch64
LLVM Thread Sanitizer for Aarch64
LLD Buildbot Enablement
Sanitizer Bots
LLDB Buildbot Enablement
LLVM Linux Kernel
LLVM Performance
Other Sanitizers (undef,
address, etc) for Aarch64
LLVM Incubation for Aarch64
long-term due to lack of staffing
long-term due to minimal investment
6. TCWG Ongoing Efforts
● GNU Toolchain Ongoing Efforts
○ Linaro Toolchain Products
■ Monthly Linaro GCC Source releases (including backports)
■ Linaro Toolchain Quarterly Binary Releases
■ Periodic GNU Toolchain Package Releases (glibc, binutils, GDB)
■ Linaro GNU Toolchain Release Validation
■ Monthly Toolchain Benchmarking
○ Development
■ GNU Toolchain Maintenance (bug fixing)
■ GCC Performance Development
■ System Library Performance Improvements
■ Toolchain Validation Automation Improvements
● LLVM Toolchain Ongoing Efforts
○ LLVM community releases
○ LLVM community maintenance
○ LLVM Buildbots
○ LLVM Libraries
○ LLVM Linux Kernel
8. Confidential
TCWG Toolchain Release Schedule (planned)
May Aug Nov Feb
May Jun Jul Aug Sep Oct Nov Dec Jan Feb
Feb May Aug Nov Feb
Linaro GCC
4.9 (binary)
Linaro GCC
5.0 (source)
Feb May Aug Nov FebMar
Linaro GCC
4.9 (source)
Linaro GCC
5.0 (binary)
Feb
FebLinaro GCC
4.8 (source)
Linaro GCC
4.8 (binary)
2015 2016
Apr
Last Linaro GCC 4.8
maintenance
quarterly binary
release
First Linaro GCC 4.9
maintenance
quarterly binary
release
First Linaro GCC 5.0
quarterly stable
binary release
Possible first
Linaro GCC 5.0
source release
9. ● Target - 25 backports a month
● Reality - 25+ backports a month
● Objective - increase efficiency of
backporting to provide greater flexibility w/rt
staffing other initiatives while continuing to
hit backport targets.
Linaro GCC Stable Backporting Effort
10. ● Method
○ early in product release life-cycle
■ Backport based on consecutive revisions
○ late in product release life-cycle
■ Backport more selectively based upon suspected
performance gains
○ respin when releases when necessary
Linaro GCC Stable Backporting Effort
(continued)
11. Linaro GCC 4.9 Backports stats
Release
Version
Number of
Backports
Comment
2014.04 0 First Linaro GCC 4.9 Release based on FSF GCC 4.9.0
2014.05 5 Limited Backports Available for backporting
2014.06 41 Used for first ARMv8 Linaro Release
2014.07 65 Including 1 respin of 2014.06
2014.08 39
2014.09 30 LCU14
2014.10 33
2014.11 2 Linaro Lab Move. 2 backports for A53 errata fixes
2014.12 51
2015.01 33
Sum: 299 + FSF Branch Merge each release
12. Linaro Validation Automation
● Automate backporting using backflip (best-case)
● Backport(s) triggers gerrit review
○ triggers jenkins automated validation on myriad of targets
■ triggers automated update of pass/fail regression information in gerrit
● triggers jenkins backport benchmark automation
○ triggers performance regression information in gerrit
○ All backports together create a release
■ release triggers jenkins automated release benchmarking
○ Release that passes performance regression testing triggers the
binary toolchain build.
● From the first backport to quarterly binary release the
build environment is held as constant as possible and
the resulting toolchain is made available.
13. Linaro GCC Automated Benchmarking
● Activities:
○ Release Benchmarking (SPEC2K6)
○ Automated Regression Benchmarking for each backport
○ Investigative Benchmarking for performance improvements
○ Pre-commit Benchmarking for upstreaming
○ Development Benchmarking to prove efficacy of patches
● Reality:
○ We’re looking forward to improved hardware becoming available in 2015
■ hardware stability (ARMv8 maturing & options)
■ system images (automation ready out-of-the box)
14. GCC Performance
● Areas & Examples:
○ Member/Stakeholder Identified Performance Improvements
■ Zero-Sign Extension Elimination using Value-Range-Propagation Pass in GCC
Middle End
■ Drop in Stream Benchmark Performance
■ Libvpx Neon Intrinsics Usage
○ Linaro GCC 4.9/5.0 Toolchain Performance Regressions
■ Compare month over month performance results and triage into bugzilla
○ Feature Exploitation
■ Auto-vectorization using NEON
○ Comparing relative gains between Aarch64 and x86_64
■ LTO instruction counts on Aarch64 vs x86_64.
16. GNU Toolchain Development - Specifics
Efforts of interest:
● GCC Modularization
● GDB Test-Suite Coverage for Arch32/Aarch64
● ILP32 Toolchain Integration and Benchmarking
● GCC Thread Sanitizer for Aarch64
Not mentioned are the ONGOING GCC Performance
efforts described earlier.
17. GCC Modularization
● Description:
This is a long-term, low-investment effort to decouple the GCC front, middle, and back ends from
each other to enable a single compiler driver to compile code for several different backends.
● Objective(s):
○ Header file flattening
○ Include File Reduction
○ Turn Target Macros into target hooks
○ Split tree.[hc]
● Reason(s):
○ Reduce unique instances of toolchain products to reduce maintenance and release costs.
○ Deploy/Update a single toolchain instance to in-field products to reduce complexity,
support, delivery, etc.
○ Provide use experience for arm/Aarch64 that matches experience for other architectures.
● Status: Staffed
○ Create front-end interface
○ Replace TYPE nodes with Gimple wrappers
○ Enhance Gimple builders
○ Remove gimplification
18. GDB Test-Suite Coverage for
Arch32/Aarch64
● Description:
Cover GDB test-suite gaps in the following:
● Objective(s):
○ Parity between x86[64] and Aarch[32|64]
○ Parity between Aarch32 and Aarch64
○ Mix-mode debuggings (e.g., thumb & arm interlaced)
○ Improving known and discovered failures for Aarch32 and Aarch64
○ Address debug info bugs
○ Available feature testing
● Reason(s):
Guarantee high-quality debugging support on arm/Aarch64.
● Status: Staffed
19. ILP32 Toolchain Integration and
Benchmarking
● Description:
Produce a Linaro based ILP32 toolchain from upstreamed/pending sources to investigate
performance characteristics as compared to Aarch32.
● Objective(s):
○ Enable ABE to build ILP32 toolchain
○ Benchmark ILP32 vs Aarch32 on Juno
○ Identify gaps and plan accordingly
■ Upstream state of Linux Kernel and Glibc support
■ Investigate performance improvement opportunities
● Reason(s):
Investigate performance characteristics of ILP32.
● Status: Staffed
20. GCC Thread Sanitizer for Aarch64
● Description:
Implement thread sanitizer for Aarch64
● Objective(s):
○ Enable GCC configury for TSAN.
○ Port TSAN to Aarch64 for a variety of Virtual Address Spaces
○ Upstream port/enablement into LLVM
○ Upstream port/enablement into GCC
● Reason(s):
Member desire for powerful analysis tools.
● Status: Staffed
21. LLVM Toolchain Development - Specifics
Efforts of interest:
● LLVM Linker
● LLDB
● LLVM Benchmarking
● LLVM Performance
22. LLVM Linker - LLD
● Description:
This is the effort to port the LLVM Linker LLD to the ELF ABI for Aarch64 and prepare it for
eventual inclusion into the LLVM Toolchain.
● Objective(s):
○ Base ELF enablement for Aarch64 (ELF sections, Symbols, ARM & Aarch64 Relocations,
Name Mangling).
○ Interoperability of binaries linked with LLD and binutils ld.
○ LTO Support
○ Features in MCLinker missing in LLD
○ Make LLDB linked objects compatible with oldest ABI in the linking group.
● Reason(s):
○ Broad adoption of LLVM toolchain requires an integrated link-editor.
● Status: Staffed
23. LLDB
● Description:
This describes an effort to implement arm and Aarch64 debugging support for the ELF ABI in
LLDB.
● Objective(s):
○ arm native debugging (it’s easier right away than cross)
○ x86_64 -> arm remote debugging
○ LLDB debugging itself
○ x86_64 native debugging
○ x86_64 -> aarch64 remote debugging
● Reason(s):
○ Support most common existing devices and move to support next generation of common
devices.
○ Broad adoption of LLVM toolchain requires an integrated link-editor.
● Status: Staffed
24. LLVM Benchmarking
● Description:
This describes an effort implement benchmarking automation with the LLVM toolchain and to
analyze and triage the results into regressions and/or opportunities.
● Objective(s):
○ ABE enablement for LLVM Builds
○ ABE enablement for LLVM Benchmarking
○ Jenkins triggers for LLVM Builds
○ Jenkins triggers for LLVM Benchmarking
○ Procedures for triaging issues into regression and opportunities.
● Reason(s):
This is a prerequisite to any in-depth LLVM Performance effort.
● Status: Partially Staffed
25. LLVM Performance
● Description:
This describes an effort to improve performance of LLVM and make it competitive with GCC on
arm and Aarch64 by responding to ongoing benchmarking investigations into the following
areas:
● Objective(s):
○ EEMBC
○ SPEC2K
○ SPEC2K6
○ Auto-vectorization
● Reason(s):
● Status: Not Staffed