the GNU implementation of the C++ Library supports a parallel mode, explained here.
- Any experiences in using it? Good ones? Bad ones? Especially regarding correctness, but also performance.
- Are there some "more or less serious" projects using it?
- Do you use it with the global turn-on-parallel switch -D_GLIBCXX_PARALLEL or do you use it carefully with manually turn-on specific parallelization functions like:
__gnu_parallel::sort(v.begin(), v.end());
? - Are there any similar open source projects? Meaning: more easy parallelization than using openMP.
Thanks for your experiences.
Sascha
Too late answer, but:
I would seriously consider Intel TBB. One thing that I noted missing from C++ standard parallel mode is parallel containers. TBB containers do not follow the interface of C++ standard containers, but they provide justifications for this. Besides, TBB has a number of examples and design patterns.
This seems similar though I haven't looked very deeply into it. http://thrust.github.com/
I've used it for some small projects, with a nice speedup for large stl operations. I never encountered any problems (I used the global switch). However I didn't really do much benchmarking, you might want to refer to studies like http://algo2.iti.kit.edu/singler/mcstl/parallelmode_se.pdf and http://ls11-www.cs.uni-dortmund.de/people/gutweng/AD08/VO11_parallel_mode_overview.pdf.