On 11/19/2012 07:34 AM, Pedro Lopez-Cabanillas wrote:
El Lunes, 19 de noviembre de 2012 06:42:38 David Henningsson escribió:
On 11/18/2012 07:56 PM, Pedro Lopez-Cabanillas wrote:
El Domingo, 18 de noviembre de 2012 12:51:58 David Henningsson escribió:
I'll do some experiments with it when I have some more time.
My bet is floating point exceptions.
I tried to verify this theory on my Nexus 7 device. I've tried to
compile with -ffast-math, with according to documentation should
activate flush-to-zero mode, as well as activating it explicitly
On my Nokia N9xx (also ARM based) the release build was made with these flags:
QMAKE_CFLAGS_RELEASE += --mfpu=neon -ffast-math -funsafe-math-optimizations
config.h:
#define WITH_FLOAT 1
Given that floats are faster on ARM devices (and probably older x86
devices as well), I think it makes sense to switch back to using single
point precision by default.
Automatic denormals to zero doesn't prevent FP operations being slower when
such numbers are involved. The problem is the larger CPU usage if there are FP
exceptions, which happens in all CPUs except modern Intel processors.
I'm trying to verify this theory, but I can't. I've tried putting the
Cortex-A9 VFP into "RunFast" mode, which is supposed to treat subnormal
and special cases without any additional latency. But there is no
difference in throughput.
By the way, this is the initialization code:
::fluid_settings_setstr(m_settings, "audio.driver", "pulseaudio");
::fluid_settings_setint(m_settings, "audio.period-size", 1024);
::fluid_settings_setint(m_settings, "audio.periods", 2);
::fluid_settings_setnum(m_settings, "synth.sample-rate", 12000.0);
::fluid_settings_setint(m_settings, "synth.chorus.active", 0);
::fluid_settings_setint(m_settings, "synth.reverb.active", 0);
::fluid_settings_setnum(m_settings, "synth.gain", 0.4);
::fluid_settings_setint(m_settings, "synth.polyphony", 16);
...
::fluid_synth_set_interp_method(m_synth, -1, FLUID_INTERP_LINEAR);
With this setup, the synth is barely usable on the N9 for real time usage.
Playing MIDI files on it is out of the question.
Interesting. I didn't think processors were *that* slow these days...
Maybe it's something else, like cache misses or so?
// David
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev