Android Hardfloat Experiment

Registered by Zach Pfeffer

This session will discuss strategies to find hot-spots that could benefit from hardfloat without breaking overall binary compatibility with market apps.

Possible Action Items from the discussion:

1. Perform real-world tests to see if things are perceived to be better with hard-float.
1.1. Test Webkit
1.2. Test Skia

2. Generate the dependencies for enabling hard float in various areas.

3. Work with the Toolchain WG to come up with a hardfp test-bench.

4. Quantify power results for hardfp usage.
4.1 Collect this data when performing power measurements in CI.

5. Test hardfloat on non-member boards like the Nexus S.

6. Upstream hardfp to AOSP and/or members.

7. Collect developer feedback and ideas about hardfp.

8. Compare hardfp and softfp in Android.

9. Characterize JIT with hardfp.

10. Characterize bionic with hardfp.

11. Characterize the toolchain with hardfp.

12. Evaluate the changes to the ABI with hardfp.

13. Rebuild the toolchain for Android using a recent binutils and check the prelinker's feedback.

14. Design a dual-ABI scheme in the Android system.

15. Benchmark SMP and hardfp.

16. Write a paper comparing hardfp with softfp.

17. Characterize hardfp across all ARM architectures. Look specifically at performance and power. Communicate results.

18. Answer the question, is it worth changing the ABI?

19. Make it easy to turn on hardfp in a build.

-Zach

Session notes: http://summit.ubuntu.com/uds-o/meeting/linaro-android-o-hardfloat/

Blueprint information

Status:
Not started
Approver:
Zach Pfeffer
Priority:
High
Drafter:
Jim Huang
Direction:
Needs approval
Assignee:
Jim Huang
Definition:
New
Series goal:
Accepted for 2011q2
Implementation:
Unknown
Milestone target:
milestone icon connect-q2.11

Related branches

Sprints

Whiteboard

Timeline: http://summit.linaro.org/uds-o/2011-05-13/
09:00-09:55, May 13, 2011

[jserv] Different than the approach of optimizing the known hotspots, I would like to share the experience about
system level tweaks for Android cell phone, ebook, and digital TV before.
(1) Take skia for example: relative benchmarking results for fixed point vs. VFPv2 vs. VFPv3
(2) ABI compatibility in NDK and JNI invocation in existing applications
(3) Some hard-fp hints in Google's GIT repositories

[jserv] We had early stage discussion about ABI at "Linaro Android Toolchain Distribution":
    https://blueprints.launchpad.net/linaro-android/+spec/linaro-android-o-toolchain-distribution
    http://summit.ubuntu.com/uds-o/meeting/linaro-android-o-toolchain-distribution/

In AOSP, Google checked in ARM HardFP support in toolchain/gcc.git:

commit 4a66e756636cb8364582ea503abd10d76f5b4aa3
Author: Jing Yu <email address hidden>
Date: Sun Jan 30 22:18:29 2011 -0800

   Upgrade gcc-4.4.3 for Android toolchain.

   - Backport upstream patches to support arm hardfp.

Work items (month 1):
[jserv] Create nightly builds with and without hardfloat: TODO
[jserv] Add webkit tests to 0xbench: TODO
[jserv] Add skia tests to 0xbench: TODO
[jeremychang] Make sure hardfloat and non-hardfloat run through CI: TODO
[jserv] Generate hardfloat dependencies: TODO
[jserv] Design and implement a hardfloat test-bench with WG: TODO
[jserv] Rebuild the toolchain for Android using a recent binutils and check the prelinker's feedback: TODO
[patrik-ryd] Extend the build system to enable and disable hard-float easily.

Work items (month 2):
[jserv] Document enabling hardfloat in builds: TODO
[jserv] Identify hardfloat enabled components that have a big impact: TODO
[jserv] Upstream big impact hard float enabled components: TODO
[jserv] Measure hardfloat/power numbers: TODO
[jserv] Collect developer feedback about hardfloat support: TODO

Work items (month 3):
[jserv] Characterize bionic hardfloat/softfloat performance: TODO
[jserv] Characterize JIT with hardfloat: TODO
[jserv] Characterize the toolchain with hardfloat: TODO
[jserv] Evaluate hardfloat ABI changes: TODO
[jserv] Design a dual-ABI scheme in the Android system: TODO

Work items (month 4):
[jserv] Characterize SMP and hardfloat: TODO
[jserv] Write a paper comparing hardfp and softfp: TODO
[jserv] Characterize hardfloat across ARM architectures: TOD

Work items (month 5)
[jserv] Give final hardfloat verdict: TODO
[jserv] Test hardfloat on Nexus S: TODO

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.