From: paul <p12...@ya...> - 2005-03-14 19:24:02
|
Hi All, I am new to the ARM with fixed point precision. Can anyone give me a hint, what limitations I will meet with Python on the gumstix for floating point calculations? I understood so far that there is a floating point emulation. Where does it happen? Is there double precision or only single float? Is there any comparison for speed re x86 with floating point processor? Thanks, Paul |
From: paul <p12...@ya...> - 2005-03-14 18:22:13
|
Hi All, I am new to the ARM with fixed point precision. Can anyone give me a hint, what limitations I will meet with Python on the gumstix for floating point calculations? I understood so far that there is a floating point emulation. Where does it happen? Is there double precision or only single float? Is there any comparison for speed re x86 with floating point processor? Thanks, Paul |
From: Dave H. <dhy...@gm...> - 2005-03-14 19:34:44
|
Hi Paul, > I am new to the ARM with fixed point precision. Can anyone > give me a hint, what limitations I will meet with Python on > the gumstix for floating point calculations? > > I understood so far that there is a floating point emulation. > Where does it happen? There are two ways that floating can be done on the ARM. The first is where floating point is emulated in the kernel. The second is where the application is linked against a softfloat library. The softfloat is also an emulation, but because it's a user-mode emulation you have to take the penalty for user->kernel->user. If you're doing extensive floating point, then using softfloat will give you better performance. If you're just doing occaisonaly stuff, then using the kernel emulation is fine. > Is there double precision or only single float? You get both. > Is there any comparison for speed re x86 with floating point > processor? I don't know. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: paul <p12...@ya...> - 2005-03-14 20:10:37
|
Hi Dave, thanks for the info. So I guess I can configure gcc to either do kernel emulation or soft float? Paul |
From: Dave H. <dhy...@gm...> - 2005-03-14 20:46:22
|
Hi Paul, > thanks for the info. So I guess I can configure gcc to either > do kernel emulation or soft float? Yes - but you have to provide the soft-float library. I haven't actually used the soft float option, because the stuff I'm doing on the ARM (not the gumstix - a processor at work) uses little or no floating point. The two options are: -mhard-float Use hardware floating point instructions -msoft-float Use library calls to perform FP operations Hmmm. I wonder if the toolchain needs to be rebuilt? Maybe Craig knows more... -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: Jonathan B. <jbr...@ea...> - 2005-03-15 02:10:51
|
On Mon, 2005-03-14 at 12:46 -0800, Dave Hylands wrote: > Hi Paul, > > > thanks for the info. So I guess I can configure gcc to either > > do kernel emulation or soft float? > > Yes - but you have to provide the soft-float library. I haven't > actually used the soft float option, because the stuff I'm doing on > the ARM (not the gumstix - a processor at work) uses little or no > floating point. > > The two options are: > -mhard-float Use hardware floating point instructions > -msoft-float Use library calls to perform FP operations > > Hmmm. I wonder if the toolchain needs to be rebuilt? Maybe Craig knows more... The -m{hard,soft}-float options change the ABI of the system - everything must be compiled for one or the other. You could in principle set up a chroot for one ABI and have the other as the default, but why would you want to? So, if you want to use userspace floating point emulation, just change the SOFT_FLOAT variable in the toplevel buildroot Makefile. After that, the compiler will use the userspace software float code by default and it will also be supported by the kernel. You can trim off 40-ish kB of the kernel by disabling it in the kernel config too. You will probably want to make a benchmark for your particular requirements. For a general idea, one single-precision floating point bench test that I wrote runs about 20x slower on the 400 MHz PXA255 than on an 800MHz Pentium III. HTH, -Jonathan |
From: Craig H. <cr...@hu...> - 2005-03-15 19:23:07
Attachments:
nbench.txt
|
On Mar 14, 2005, at 12:46 PM, Dave Hylands wrote: > Hi Paul, > >> thanks for the info. So I guess I can configure gcc to either >> do kernel emulation or soft float? > > Yes - but you have to provide the soft-float library. I haven't > actually used the soft float option, because the stuff I'm doing on > the ARM (not the gumstix - a processor at work) uses little or no > floating point. > > The two options are: > -mhard-float Use hardware floating point instructions > -msoft-float Use library calls to perform FP operations > > Hmmm. I wonder if the toolchain needs to be rebuilt? Maybe Craig knows > more... Before building the buildroot, edit the top-level Makefile and change the SOFTFLOAT variable (whose name I forget) to true. Everything will then build with soft-float on. You can optionally turn off the NWPE stuff in the kernel if you want to save a bit of space then, but you don't need to. I've been testing it, and it works pretty good. I have nbench numbers to compare it against kernel FP, but haven't had a chance yet to post them to the benchmarks page on the wiki. Attached is the nbench log file. |