helm getting ARM support!

Requested forum for discussing ARM Hardware other than the PI/PI2

Moderators: MattKingUSA, khz

Post Reply
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

helm getting ARM support!

Post by danboid »

User avatar
sysrqer
Established Member
Posts: 2516
Joined: Thu Nov 14, 2013 11:47 pm
Has thanked: 319 times
Been thanked: 147 times
Contact:

Re: helm getting ARM support!

Post by sysrqer »

Well that's good news but it doesn't seem to be such a definite statement from reading that thread :P
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: helm getting ARM support!

Post by danboid »

Check it again. Matt has a Beaglebone Black and is going to try getting Helm running on it!

:)
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: helm getting ARM support!

Post by danboid »

I've updated the GH issue now as I've got Helm to build and run on my BPi but its not really usable as it xruns all over the place even with just one instance using the default patch.

I'm hoping Matt will add NEON support to helm to make it usable on ARM machines.
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: helm getting ARM support!

Post by tramp »

danboid wrote:I'm hoping Matt will add NEON support to helm to make it usable on ARM machines.
You can do that by yourself, as falktx pointed out, that are just compile flags.

run cat /proc/cpuinfo to see which flags be supported on your ARM maschine, then use them.

here is a example:

Code: Select all

cat /proc/cpuinfo
...
model name   : ARMv7 Processor rev 5 (v7l)
...
Features   : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
...
flags to use:

Code: Select all

-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fomit-frame-pointer -ftree-loop-linear -ffinite-math-only -fno-math-errno -fno-signed-zeros -fstrength-reduce -pipe
On the road again.
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: helm getting ARM support!

Post by tramp »

Well, I'm didn't use them by myself, no ARM devices here (except the MOD Quadra). This flags been suggested by Autostatic in the guitarix forum for running guitarix on the RPI2.
falkTX wrote:-ftree-loop-linear is new to me, did you do some testing with that?


Yes, we use it in guitarix as default optimization flag.
gcc-4.4.1 wrote:-ftree-loop-linear
Perform linear loop transformations on tree. This flag can improve cache performance and allow further loop optimizations to take place.
gcc-5.2.0 wrote:-ftree-loop-linear
Perform loop interchange transformations on tree. Same as -floop-interchange. To use this code transformation, GCC has to be configured with --with-isl to enable the Graphite loop transformation infrastructure.
On the road again.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: helm getting ARM support!

Post by danboid »

Thanks for your suggestions F and tramp!

F:

I'm using a Banana Pi not an RPi 2. Your flags should still apply as its basically the same CPU albeit dual instead of quad core and 1 Ghz instead of 900 Mhz.

Both:

I'll try your recommendations and see how much it improves things although I would imagine there is quite a lot more that could be done to properly optimize Helm for ARM. I grepped the source for sse2 and there is a fair bit of sse2-specific code. This would surely have to be rewritten for NEON to get the best performance.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: helm getting ARM support!

Post by danboid »

Maybe I spoke too soon!

I've just had another look at the source and all the SSE2 stuff is within JUCE with the exception of mopo/src/utils.h but I'm not sure what that does.

With any luck Matt will find some way to increase performance for ARM devices beyond just changing build flags.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: helm getting ARM support!

Post by danboid »

I rebuilt Helm tonight using all of the flags F recommended plus -ftree-loop-linear but Helm ran a lot worse than using the default flags. It takes just under 2 hours to build Helm and the included JUCE tree on my BPi so I think I'll wait to see what Matt comes up with before I try again.

I'm disappointed the RPi 3 still only has a 100Mb NIC and no SATA or USB 3. The faster, 64 bit CPU is nice but the lack of decent storage IO means I still prefer my BPi. It makes a massive difference for usability and responsiveness running off a SATA HD or SSD vs an SD card or USB 2 HD that is sharing the same bus as the NIC and the other USB devices.
Last edited by danboid on Tue Mar 01, 2016 7:46 am, edited 1 time in total.
tramp
Established Member
Posts: 2328
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 450 times

Re: helm getting ARM support!

Post by tramp »

falkTX wrote: @tramp:
I see you don't have -ffast-math in there, why is that?
@falkTX

I forgot to answer, well , -ffast-math gime wrong calculated float values in the old day's, That's why I didn't use it any more and use only selected flags from the list which -ffast-math activate. I didn't know if that behave is fixed with newer compilers, but I guess it is.
On the road again.
Post Reply