I would like to rework fluidsynths parallel audio rendering. The current 
implementation is not very efficient, the synchronization overhead seems to 
dominate. At least for me, most of the time only one core is fully active. I 
would like to get rid of that manual thread handling in rvoice_mixer and use 
openMP to attempt a simpler, yet more efficient implementation. I think it 
should be possible without any hard synchronization between threads. In case 
the openMP implementation performs better than the current one, this will be 
provided as a feature for the next major version. This means, in order to have 
fluidsynth being able to render audio in parallel, it needs to be compiled 
using a compiler that supports at least openMP 3.0, because I need the omp task 
directive. OMP 3.0 was released in 2008. Nowadays all major compilers (clang, 
gcc, Intel, IBM, Sun Studio) support this version... execpt Microsofts VC 
compiler ofc, which is still lacking behind with openMP 2.0 (rel. 2002) and 
apparently they have no plans to support any newer version [1] [2]. Just to be 
clear: openMP would be an optional dependency. You can continue to compile 
fluidsynth without it, it would just not be capable of parallel rendering.

Any thoughts on that? In case anybody is interested, you may follow the current 
implementation progress: [3]

Reference issue with some nice pictures illustrating the basic implementation 
of rvoice_mixer: [4]

Tom

[1] 
https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/2276847-support-openmp-3-0-or-3-1
[2] 
https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/13495731-add-support-for-openmp-4-5-to-vc
[3] https://github.com/FluidSynth/fluidsynth/compare/openmp
[4] https://github.com/FluidSynth/fluidsynth/issues/197


_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to