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