|
From: Vladimir S. <ha...@gm...> - 2004-12-21 13:33:46
|
Hi Garett, This is a bummer. GCC can't find enough registers for assembly code to use. We've had these problems on and off and had to guide it a bit in these areas. In general, building with -O2 seems to have a better chance then -O1 or -O0. But it looks like you already have -O2 there. Could you send output from gcc --version? Some gcc versions seem to be better than others when it comes to optimizations. Dec5th was before the "optimization check in" so my guess is the bug you've mentioned with release volume has already been fixed. I remember similar experience. And this build problem was likely not introduced with checkins from last night, but rather the optimization checkins that we did a week earlier. So, to summarize. I'd like to reproduce this problem and to do this i need to know the exact gcc version. What i'll have to do is go to asm code and specify registers by hand or maybe reduce register usage somewhat if it doesn't hurt performance too much. My guess is this should not be too difficult. We'll probably have this figured out tonight or tomorrow night. Regards, Vladimir. On Tue, 21 Dec 2004 00:24:36 -0700, Garett Shulman <shu...@co...> wrote: > Hello, I checked out the cvs a few minutes ago and am getting a > compilation error (last few lines of build posted below. I have tried > -march=athlon -mcpu=athlon as well as the default i686 ). I have a copy > that I checked out on the 5th of December which builds and works pretty > well (nice work!). I am running an athlon xp 1700 with the 2.4.27 kernel > which has been patched with low latency and kernel preemption (is this > similar to what others are running?). Also, I think there might be a bug > with the amplitude for voices that are triggerd by release velocity. The > gig patches that have release voices play these voices very loudly when > I trigger them on my keyboard. -Garett > > g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -march=athlon -mcpu=athlon > -ffast-math -fpermissive -g -O2 -MT Voice.lo -MD -MP -MF .deps/Voice.Tpo > -c Voice.cpp >/dev/null 2>&1 > mv -f .libs/Voice.lo Voice.lo > if /bin/sh ../../../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. > -I../../.. -march=athlon -mcpu=athlon -ffast-math -fpermissive -g -O2 > -MT Synthesizer.lo -MD -MP -MF ".deps/Synthesizer.Tpo" \ > -c -o Synthesizer.lo `test -f 'Synthesizer.cpp' || echo > './'`Synthesizer.cpp; \ > then mv -f ".deps/Synthesizer.Tpo" ".deps/Synthesizer.Plo"; \ > else rm -f ".deps/Synthesizer.Tpo"; exit 1; \ > fi > rm -f .libs/Synthesizer.lo > g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -march=athlon -mcpu=athlon > -ffast-math -fpermissive -g -O2 -MT Synthesizer.lo -MD -MP -MF > .deps/Synthesizer.Tpo -c Synthesizer.cpp -fPIC -DPIC > ../common/Resampler.h: In static member function `static void > LinuxSampler::gig::Synthesizer<IMPLEMENTATION, CHANNELS, USEFILTER, > INTERPOLATE, DOLOOP, CONSTPITCH>::Synthesize(sample_t*, void*, float&, > float*, float*, uint&, float*, float*, float*, > LinuxSampler::gig::Filter&, > LinuxSampler::gig::Filter&, LinuxSampler::biquad_param_t&, > LinuxSampler::biquad_param_t&) [with implementation_t IMPLEMENTATION = > ASM_X86_MMX_SSE, LinuxSampler::gig::channels_t CHANNELS = MONO, bool > USEFILTER = false, bool INTERPOLATE = false, bool DOLOOP = false, bool > CONSTPITCH = true]': > Synthesizer.h:135: instantiated from `static void > LinuxSampler::gig::Synthesizer<IMPLEMENTATION, CHANNELS, USEFILTER, > INTERPOLATE, DOLOOP, CONSTPITCH>::Synthesize(VOICE_T&, void*, sample_t*, > uint&) [with VOICE_T = LinuxSampler::gig::Voice, implementation_t > IMPLEMENTATION = ASM_X86_MMX_SSE, LinuxSampler::gig::channels_t CHANNELS > = MONO, bool USEFILTER = false, bool INTERPOLATE = false, bool DOLOOP = > false, bool CONSTPITCH = true]' > Synthesizer.h:109: instantiated from `static void > LinuxSampler::gig::Synthesizer<IMPLEMENTATION, CHANNELS, USEFILTER, > INTERPOLATE, DOLOOP, CONSTPITCH>::SynthesizeFragment(VOICE_T&, unsigned > int, sample_t*, uint&, uint&, unsigned int, unsigned int, unsigned int, > uint&, void*, float&, float&) [with VOICE_T = LinuxSampler::gig::Voice, > implementation_t IMPLEMENTATION = ASM_X86_MMX_SSE, > LinuxSampler::gig::channels_t CHANNELS = MONO, bool USEFILTER = false, > bool INTERPOLATE = false, bool DOLOOP = false, bool CONSTPITCH = true]' > Synthesizer.h:73: instantiated from `static void > LinuxSampler::gig::Synthesizer<IMPLEMENTATION, CHANNELS, USEFILTER, > INTERPOLATE, DOLOOP, CONSTPITCH>::SynthesizeFragment(VOICE_T&, unsigned > int, sample_t*, unsigned int) [with VOICE_T = LinuxSampler::gig::Voice, > implementation_t IMPLEMENTATION = ASM_X86_MMX_SSE, > LinuxSampler::gig::channels_t CHANNELS = MONO, bool USEFILTER = false, > bool INTERPOLATE = false, bool DOLOOP = false, bool CONSTPITCH = true]' > Synthesizer.cpp:150: instantiated from here > ../common/Resampler.h:69: can't find a register in class `GENERAL_REGS' > while > reloading `asm' > make[4]: *** [Synthesizer.lo] Error 1 > make[4]: Leaving directory > `/root/src/system/linuxsampler/linuxsampler/src/engines/gig' > make[3]: *** [all-recursive] Error 1 > make[3]: Leaving directory > `/root/src/system/linuxsampler/linuxsampler/src/engines' > make[2]: *** [all-recursive] Error 1 > make[2]: Leaving directory `/root/src/system/linuxsampler/linuxsampler/src' > make[1]: *** [all-recursive] Error 1 > make[1]: Leaving directory `/root/src/system/linuxsampler/linuxsampler' > make: *** [all] Error 2 > root@homebox:~/src/system/linuxsampler/linuxsampler# > > Vladimir Senkov wrote: > > >Hi All, > > > >I've checked in a few changes into cvs. > >Hopefully fixed a bug or two (skip was not correctly passed into > >synthesizeFragment()). > >Some other minor cleanups. > >Some profiling capabilities (enabled by --profile flag) to allow a > >performer to see how many voices "in theory" could LS synthesizer > >handle. It uses current instuments and voices to figure out how long > >fragment synthesis takes and calculates a numbe in "bogovoices" that > >is printed to the screen every second. For now the main purpose is to > >compare CPP with ASM implementation. Higher number is better. > >We'll try to perfect this and other measurements and once that is done > >someone will hopefully write a better document describing these > >features. > > > >Next we will try to fix the long outstanding streaming bug. hopefully > >this coming weekend if all is well. > > > >Please report any bugs, changes, etc. and i'll try to fix them asap. > > > > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > -- Regards, Vladimir |