|
From: Mark K. <mar...@gm...> - 2004-12-14 03:36:00
|
On Sun, 12 Dec 2004 20:01:23 -0500, Vladimir Senkov <ha...@gm...> wrote: > Hi Everybody, > > It may seem like LS has been quiet for a little while . . . > But a lot of stuff has been happening behind the scenes. > Christian and I have been working on optimizations with the goal of > making LS nothing short of state of the art when it comes to > efficiency. > > We focused on improving efficiency of real time calculations. > The project consisted of two major developments: > 1) Reducing the amount of work and conditionals per sample point > depending on the state of the voice. > 2) Developing MMX/SSE(1) implementation for most calculation intensive > routines (as well as providing a framework for further implementations > such as SSE2/3, altivec, etc. > > To acomplish task number 1 without introducing branches into the "fast > path" we've introduced a concept which we called "synthesis mode". An > entire segment is processed in the same mode. > Function to process the entire mode is generated using highly > templated CPP code. > Ideally (depending on your compiler and options) an entire segment > will be processed without a single call with only one branch (loop). > So there is a function for each "synthesis mode" and there is a > function pointer that is set for a voice before the segment is > processed. > > To acomplish task number 2 we had to write a few X86 assembly routines > and do a lot of benchmarking, testing, etc. For some modes we > acomplished speeds several times faster than CPP implementation. > Further optimization will be made in some areas. > We hit a number of issues related to FPU/MMX state problems of Pentium > and also lots of funny GCC related things. We really wanted to support > pre-SSE2 processors though. > > Christian is working hard right now on checking everything into the CVS. > I'd like to point out that there is still some work to be done (as usual) like: > 1) Some cleanup, putting #if ARCH_X86 in place, etc > 2) Integrating benchmarking into LS. For now we have separate > benchmarking suite that we've used but it's not very user friendly and > up to date, so we are not releasing it at this time. Benchmarking will > allow users to do wonderful things such as comparing hardware to pick > best fit for LS, etc. > 3) cubic interpolation for MMXSSE needs to be implemented at some point > 4) lots of other things > > There will be subsequent submits to the CVS in the near future so > please stay tuned! > > -- > Regards, > Vladimir > Hi, I thought that maybe I should try compiling and running LS/QS again as it's been awhile. I don't like CVS much so I went to Rui's site and downloaded the newest versions of libgig, liblscp, linuxsampler and qsampler that he has there. I finally managed to get them built. That was a bit of a struggle. Maybe someone could add the make -f Makefile.cvs step to the INSTALL file? When I tried to run them the qsampler gui comes up fine but when I tried to load GigaPIano it took a couple of minutes, appeared to use up a lot of memory, and then crashed and had to be killed. This is FC2/PlanetCCRMA with the newest PlanetEdge kernel. The gigs were on my 1394 audio drive I use with Ardour all the time. I know this isn't the most recent version. This note just documents what I ran into. - Mark |