I really used both, and my general impression is that if your algorithm is pretty easy to make parallel (for example, even-sized loops, not too much data interdependence), OpenMP is easier and fun to work with. In fact, if you find that you can use OpenMP, this is probably the best way to go if you know that your platform will support it. I did not use the new OpenMP task structures, which are much more general than the original loop and section parameters.
TBB gives you more data structures in front, but it definitely requires a bigger edge. As a plus, it might be better if you find out about problems with the conditions of the race. I mean, in OpenMP, it's pretty easy to incorporate race conditions without creating something in common (or something else) that should be. You only see this when you get bad results. I think this is a little less likely with TBB.
In general, my personal preference was for OpenMP, especially considering its increased expressiveness with tasks.
Ben Apr 28 '09 at 11:54 2009-04-28 11:54
source share