Which Parallel Boost Graph Library should I use?
Hello, There is more than one PBGL server, one hosted by Boost, and the other by the Open Systems Laboratory (OSL). It appears that each has code not included in the other, whether I look at the release or sandbox SVN versions of the library. I have three criteria as to which version(s) I should use, which are all equally important to my final choice. First, in general, which is more reliable, the Boost or the OSL version? Both Boost and the OSL know their stuff, so it's not that I question the authors' skill, but rather I don't know which version has received more testing and validation. Second, which is more up-to-date, both in terms of which is updated more frequently, and which is more algorithmically and mathematically current? While I know programmers do love their graph algorithms, I wonder if the actual computer scientists and mathematicians at the OSL are more on the cutting edge. Finally, whether I use the Boost or the OSL server, I am more interested in the sandbox version than the release, as the development version has a lot of good stuff which isn't present in the release. That being said, in my experience there is quite a bit of variability amongst sandbox libraries as to their readiness for use, and I am not sure whether either PBGL sandbox is functional. Note, if there is some feature in one of the sandboxes that I am quite interested in, but is not yet at production quality, I wouldn't mind fixing it up for the community. Answers to any or all of the above questions would be most appreciated. Have a good day, -- Chris
Hi Chris, The canonical versions of the bulk-synchronous parallel version of PBGL is the one maintained in Boost. The releases hosted on the OSL server are stale and unmaintained at the moment, meaning it's unlikely that they'll work out of the box with current versions of Boost. They're mostly still there as a matter of historical record, and because I haven't had any *new* releases to replace them with. There should be very little of the original PBGL codebase that didn't get moved over to Boost at the time of the original PBGL release (around 1.44 if I remember right, it's been a while since I did it). Development since that time (at least within the OSL) has mostly been limited to maintenance (keeping things up to date with other Boost dependencies) and bug fixes. The active development version of PBGL at the moment is a message-driven variant using an as-of-yet unreleased active message library also developed in the OSL. We've given pre-beta access to a few people, but any release of the active message version of the PBGL will have to wait until the active message library it's based on is released. The new version has a number of beneficial performance implications with regard to more effectively hiding latency, reducing overhead, and leveraging fine-grained parallelism vs. the coarse-grained/BSP form of the original library. Unfortunately it doesn't yet support all the algorithms in the original PBGL; new algorithms generally get implemented when we need some new results for a paper. If you want to let me know what your intended use case is I can point you to the most appropriate version of the library. If you're concerned about stability I would strongly recommend the Boost version. If you're interested in algorithm(s) that don't run well in that version or are both unimplemented and highly asynchronous we could talk about the suitability of the new message-driven version. Hybrid parallelism is also a big part of the reason for the redesign so if you're interested in that use case the new version may also be worth looking into. Cheers, Nick On Jan 14, 2013, at 4:02 PM, Christopher Cowing-Zitron wrote:
Hello,
There is more than one PBGL server, one hosted by Boost, and the other by the Open Systems Laboratory (OSL). It appears that each has code not included in the other, whether I look at the release or sandbox SVN versions of the library. I have three criteria as to which version(s) I should use, which are all equally important to my final choice.
First, in general, which is more reliable, the Boost or the OSL version? Both Boost and the OSL know their stuff, so it's not that I question the authors' skill, but rather I don't know which version has received more testing and validation.
Second, which is more up-to-date, both in terms of which is updated more frequently, and which is more algorithmically and mathematically current? While I know programmers do love their graph algorithms, I wonder if the actual computer scientists and mathematicians at the OSL are more on the cutting edge.
Finally, whether I use the Boost or the OSL server, I am more interested in the sandbox version than the release, as the development version has a lot of good stuff which isn't present in the release. That being said, in my experience there is quite a bit of variability amongst sandbox libraries as to their readiness for use, and I am not sure whether either PBGL sandbox is functional. Note, if there is some feature in one of the sandboxes that I am quite interested in, but is not yet at production quality, I wouldn't mind fixing it up for the community.
Answers to any or all of the above questions would be most appreciated. Have a good day,
-- Chris
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Christopher Cowing-Zitron
-
Nick Edmonds