Konstantinos Margaritis

Ubuntu rebuilt with hardfp float-abi -blog archive

Discussion created by Konstantinos Margaritis on May 20, 2010
Latest reply on May 20, 2010 by Konstantinos Margaritis
Ok, first post to the site. Congrats for a very good looking community site!

So, after a few problems and delays, We now have a working autobuilder that's building ubuntu packages (karmic for now, will switch to lucid soon). The difference with the default Ubuntu ARM repository, is that all packages are built using 2009q3-67 CodeSourcery compiler -now switched mid-process to the newer 2010q1-202 [1]. Both are packaged as Ubuntu .deb packages as complete replacements for the default packages. We will also provide an optional compiler installed in /opt, for those who do not want to replace the default Ubuntu. Though that's only for the default softfp Ubuntu installations, as the default is useless as it doesn't support hardfp at all.

So, with that compiler, we rebuilt all packages with -float-abi=hard -mfpu=vfp. So far we're at 2500 packages and the list grows. We had to do this as right now, the two ABIs (softfp/hard) are incompatible and there is not (yet) any way to run both binaries on the same system. This might change, but we did not want to wait as the new hardfp ABI is supposed to build faster executables at least in the case of fpu-intensive applications (it saves up to 20 cycles when calling a function with fp arguments, should make a difference, eg. in 3D). We will provide benchmarks soon.

So, what we will deliver in the following days:

1. An basic image of 2GB size to install on your SD card and use on your Efika MX directly.
2. A hardfp repository and an autobuilder -rebuildd-based
3. Benchmarks comparing softfp and hardfp performance to see if it's worth the effort.

Finally, unrelated to this, I am close to reaching the first alpha status for the new libfreevec, which will include ARM NEON, AltiVec and (preliminary) SSE support. Results for NEON will follow soon.

[1] Here's the proof:

# gcc -v

Using built-in specs.

Target: arm-linux-gnueabi

Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-cs+genesi2 (Sourcery G++ Lite 2010q1-202, Genesi ARM Native 20100517)' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-tune=cortex-a8 --with-float=hard --with-fpu=vfp --disable-werror --enable-checking=release --build=arm-linux-gnueabi --host=arm-linux-gnueabi --target=arm-linux-gnueabi

Thread model: posix

gcc version 4.4.1 (Ubuntu 4.4.1-cs+genesi2 (Sourcery G++ Lite 2010q1-202, Genesi ARM Native 20100517))



Outcomes