Re: [OMPI users] MPI and C++ (Boost)
Luis Vitorio Cargnini wrote: Ok, after all the considerations, I'll try Boost, today, make some experiments and see if I can use it or if I'll avoid it yet. But as said by Raimond I think, the problem is been dependent of a rich-incredible-amazing-toolset but still implementing only MPI-1, and do not implement all the MPI functions main drawbacks of boost, but the set of functions implemented do not compromise the functionality, i don't know about the MPI-1, MPI-2 and future MPI-3 specifications, how this specifications implementations affect boost and the developer using Boost, with OpenMPI of course. Continuing if something change in the boost how can I guarantee it won't affect my code in the future ? It is impossible. Anyway I'll test it today and without it and choose my direction, thanks for all the replies, suggestions, solutions, that you all pointed to me I really appreciate all your help and comments about boost or not my code. Thanks and Regards. Vitorio. Vitorio, If there is some MPI capability that is not currently provided in Boost.MPI, then just call it the normal MPI way. Using Boost.MPI doesn't interfere with any use of the C bindings, even in the same function. As for future changes, if something happens to a boost library that you don't like, just keep using the older version. Past releases of boost remain available after new releases arrive. John
Re: [OMPI users] MPI and C++ (Boost)
Ok, after all the considerations, I'll try Boost, today, make some experiments and see if I can use it or if I'll avoid it yet. But as said by Raimond I think, the problem is been dependent of a rich-incredible-amazing-toolset but still implementing only MPI-1, and do not implement all the MPI functions main drawbacks of boost, but the set of functions implemented do not compromise the functionality, i don't know about the MPI-1, MPI-2 and future MPI-3 specifications, how this specifications implementations affect boost and the developer using Boost, with OpenMPI of course. Continuing if something change in the boost how can I guarantee it won't affect my code in the future ? It is impossible. Anyway I'll test it today and without it and choose my direction, thanks for all the replies, suggestions, solutions, that you all pointed to me I really appreciate all your help and comments about boost or not my code. Thanks and Regards. Vitorio. Le 09-07-07 à 08:26, Jeff Squyres a écrit : I think you face a common trade-off: - use a well-established, debugged, abstraction-rich library - write all of that stuff yourself FWIW, I think the first one is a no-brainer. There's a reason they wrote Boost.MPI: it's complex, difficult stuff, and is perfect as middleware for others to use. If having users perform a 2nd step is undesirable (i.e., install Boost before installing your software), how about embedding Boost in your software? Your configure/build process can certainly be tailored to include Boost[.MPI]. Hence, users will only perform 1 step, but it actually performs "2" steps under the covers (configures +installs Boost.MPI and then configures+installs your software, which uses Boost). FWIW: Open MPI does exactly this. Open MPI embeds at least 5 software packages: PLPA, VampirTrace, ROMIO, libltdl, and libevent. But 99.9% of our users don't know/care because it's all hidden in our configure / make process. If you watch carefully, you can see the output go by from each of those configure sections when running OMPI's configure. But no one does. ;-) Sidenote: I would echo that the Forum is not considering including Boost.MPI at all. Indeed, as mentioned in different threads, the Forum has already voted once to deprecate the MPI C++ bindings, partly *because* of Boost. Boost.MPI has shown that the C++ community is better at making C++ APIs for MPI than the Forum is. Hence, our role should be to make the base building blocks and let the language experts make their own preferred tools. On Jul 7, 2009, at 5:03 AM, Matthieu Brucher wrote: > IF boost is attached to MPI 3 (or whatever), AND it becomes part of the > mainstream MPI implementations, THEN you can have the discussion again. Hi, At the moment, I think that Boost.MPI only supports MPI1.1, and even then, some additional work may be done, at least regarding the complex datatypes. Matthieu -- Information System Engineer, Ph.D. Website: http://matthieu-brucher.developpez.com/ Blogs: http://matt.eifelle.com and http://blog.developpez.com/? blog=92 LinkedIn: http://www.linkedin.com/in/matthieubrucher ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres Cisco Systems ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users smime.p7s Description: S/MIME cryptographic signature PGP.sig Description: Ceci est une signature électronique PGP
Re: [OMPI users] MPI and C++ (Boost)
I think you face a common trade-off: - use a well-established, debugged, abstraction-rich library - write all of that stuff yourself FWIW, I think the first one is a no-brainer. There's a reason they wrote Boost.MPI: it's complex, difficult stuff, and is perfect as middleware for others to use. If having users perform a 2nd step is undesirable (i.e., install Boost before installing your software), how about embedding Boost in your software? Your configure/build process can certainly be tailored to include Boost[.MPI]. Hence, users will only perform 1 step, but it actually performs "2" steps under the covers (configures+installs Boost.MPI and then configures+installs your software, which uses Boost). FWIW: Open MPI does exactly this. Open MPI embeds at least 5 software packages: PLPA, VampirTrace, ROMIO, libltdl, and libevent. But 99.9% of our users don't know/care because it's all hidden in our configure / make process. If you watch carefully, you can see the output go by from each of those configure sections when running OMPI's configure. But no one does. ;-) Sidenote: I would echo that the Forum is not considering including Boost.MPI at all. Indeed, as mentioned in different threads, the Forum has already voted once to deprecate the MPI C++ bindings, partly *because* of Boost. Boost.MPI has shown that the C++ community is better at making C++ APIs for MPI than the Forum is. Hence, our role should be to make the base building blocks and let the language experts make their own preferred tools. On Jul 7, 2009, at 5:03 AM, Matthieu Brucher wrote: > IF boost is attached to MPI 3 (or whatever), AND it becomes part of the > mainstream MPI implementations, THEN you can have the discussion again. Hi, At the moment, I think that Boost.MPI only supports MPI1.1, and even then, some additional work may be done, at least regarding the complex datatypes. Matthieu -- Information System Engineer, Ph.D. Website: http://matthieu-brucher.developpez.com/ Blogs: http://matt.eifelle.com and http://blog.developpez.com/?blog=92 LinkedIn: http://www.linkedin.com/in/matthieubrucher ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres Cisco Systems
Re: [OMPI users] MPI and C++ (Boost)
> IF boost is attached to MPI 3 (or whatever), AND it becomes part of the > mainstream MPI implementations, THEN you can have the discussion again. Hi, At the moment, I think that Boost.MPI only supports MPI1.1, and even then, some additional work may be done, at least regarding the complex datatypes. Matthieu -- Information System Engineer, Ph.D. Website: http://matthieu-brucher.developpez.com/ Blogs: http://matt.eifelle.com and http://blog.developpez.com/?blog=92 LinkedIn: http://www.linkedin.com/in/matthieubrucher
Re: [OMPI users] MPI and C++ (Boost)
Hi Luis, Luis Vitorio Cargnini wrote: Your suggestion is a great and interesting idea. I only have the fear to get used to the Boost and could not get rid of Boost anymore, because one thing is sure the abstraction added by Boost is impressive, it turn I should add that I fully understand what it is you are saying and despite all the good things there were being said about Boost, I was avoiding it for a very long time because of the dependency issue. For two reasons -- the dependency issue for myself (exactly like what you said) and distributing it means users will have to do an extra step (regardless of how easy/hard the step is, it's an extra step). I finally switched over :-) and the "prototype" idea was just a way to ease you into it. MPI programs are hard to get right, and Boost aside, it is a good idea to have something working that is easy to do and then you can remove the parts that you don't like later. By the way, it seems that less-used parts of MPI do not have equivalents in Boost.MPI, so just using Boost won't solve all of your problems. There is a list here (the table with the entries that say "unsupported"): http://www.boost.org/doc/libs/1_39_0/doc/html/mpi/tutorial.html#mpi.c_mapping Good luck! Ray
Re: [OMPI users] MPI and C++ (Boost)
Terry Frankcombe wrote: I understand Luis' position completely. He wants an MPI program, not a program that's written in some other environment, no matter how attractive that may be. It's like the difference between writing a numerical program in standard-conforming Fortran and writing it in the latest flavour of the month interpreted language calling highly optimised libraries behind the scenes. IF boost is attached to MPI 3 (or whatever), AND it becomes part of the mainstream MPI implementations, THEN you can have the discussion again. Ciao Terry I guess we view it differently. Boost.MPI isn't a language at all. It is a library written in fully ISO compliant C++, that exists to make doing an otherwise complex and error prone job simpler and more readable. As such, I would compare it to using a well tested BLAS library to do matrix manipulations in your Fortran code or writing it yourself. Both can be standard conforming Fortran (though many BLAS implementations include lower level optimized code), and neither is a flavor of the month interpreted language. The advantage of the library is that it allows you to work at a level of abstraction that may be better suited to your work. For you, as for everyone else, make your choices based on what you believe best serves the needs of your program, whether that includes Boost.MPI or not. However, making the choices with an understanding of the options strengths and weaknesses gives the best chance of writing a good program. John PS - I am not part of the MPI Forum, but I would be surprised if they chose to add boost to any MPI version. Possibly an analog of Boost.MPI, but not all of boost. There are over 100 different libraries, covering many different areas of use in boost, and most of them have no direct connection to MPI. PPS - If anyone would like to know more about Boost, I would suggest the website (http://www.boost.org) or the user mailing list. Folks who don't write in C++ will probably not be very interested.
Re: [OMPI users] MPI and C++ (Boost)
On Mon, 2009-07-06 at 23:09 -0400, John Phillips wrote: > Luis Vitorio Cargnini wrote: > > > > Your suggestion is a great and interesting idea. I only have the fear to > > get used to the Boost and could not get rid of Boost anymore, because > > one thing is sure the abstraction added by Boost is impressive, it turn > > the things much less painful like MPI to be implemented using C++, also > > the serialization inside Boost::MPI already made by Boost to use MPI is > > astonishing attractive, and of course the possibility to add new types > > like classes to be able to send objects through MPI_Send of Boost, this > > is certainly attractive, but again I do not want to get dependent of a > > library as I said, this is my major concern. > > . > >I'm having problems understanding your base argument here. It seems > to be that you are afraid that Boost.MPI will make your prototype > program so much better and easier to write that you won't want to remove > it. Wouldn't this be exactly the reason why keeping it would be good? > >I like and use Boost.MPI. I voted for inclusion during the review in > the Boost developer community. However, what you should do in your > program is use those tools that produce the right trade off between the > best performance, easiest to develop correctly, and most maintainable > program you can. If that means using Boost.MPI, then remember that > questions about it are answered at the Boost Users mailing list. If your > decision is that that does not include Boost.MPI then you will have some > other challenges to face but experience shows that you can still produce > a very high quality program. > >Choose as you see fit, just be sure to understand your own reasons. > (Whether any of the rest of us on this list understand them or not.) I understand Luis' position completely. He wants an MPI program, not a program that's written in some other environment, no matter how attractive that may be. It's like the difference between writing a numerical program in standard-conforming Fortran and writing it in the latest flavour of the month interpreted language calling highly optimised libraries behind the scenes. IF boost is attached to MPI 3 (or whatever), AND it becomes part of the mainstream MPI implementations, THEN you can have the discussion again. Ciao Terry -- Dr. Terry Frankcombe Research School of Chemistry, Australian National University Ph: (+61) 0417 163 509Skype: terry.frankcombe
Re: [OMPI users] MPI and C++ (Boost)
Luis Vitorio Cargnini wrote: Your suggestion is a great and interesting idea. I only have the fear to get used to the Boost and could not get rid of Boost anymore, because one thing is sure the abstraction added by Boost is impressive, it turn the things much less painful like MPI to be implemented using C++, also the serialization inside Boost::MPI already made by Boost to use MPI is astonishing attractive, and of course the possibility to add new types like classes to be able to send objects through MPI_Send of Boost, this is certainly attractive, but again I do not want to get dependent of a library as I said, this is my major concern. . I'm having problems understanding your base argument here. It seems to be that you are afraid that Boost.MPI will make your prototype program so much better and easier to write that you won't want to remove it. Wouldn't this be exactly the reason why keeping it would be good? I like and use Boost.MPI. I voted for inclusion during the review in the Boost developer community. However, what you should do in your program is use those tools that produce the right trade off between the best performance, easiest to develop correctly, and most maintainable program you can. If that means using Boost.MPI, then remember that questions about it are answered at the Boost Users mailing list. If your decision is that that does not include Boost.MPI then you will have some other challenges to face but experience shows that you can still produce a very high quality program. Choose as you see fit, just be sure to understand your own reasons. (Whether any of the rest of us on this list understand them or not.) John
Re: [OMPI users] MPI and C++ (Boost)
Hi Raymond, thanks for your answer Le 09-07-06 à 21:16, Raymond Wan a écrit : I've used Boost MPI before and it really isn't that bad and shouldn't be seen as "just another library". Many parts of Boost are on their way to being part of the standard and are discussed and debated on. And so, it isn't the same as going to some random person's web page and downloading their library/template. Of course, it takes time to make it into the standard and I'm not entirely sure if everything will (probably not). (One "annoying" thing about Boost MPI is that you have to compile it...if you are distributing your code, end-users might find that bothersome...oh, and serialization as well.) we have a common factor, I'm not exactly distributing, but I'll add a dependency into my code, something that bothers me. One suggestion might be to make use of Boost and once you got your code working, start changing it back. At least you will have a working program to compare against. Kind of like writing a prototype first... Your suggestion is a great and interesting idea. I only have the fear to get used to the Boost and could not get rid of Boost anymore, because one thing is sure the abstraction added by Boost is impressive, it turn the things much less painful like MPI to be implemented using C++, also the serialization inside Boost::MPI already made by Boost to use MPI is astonishing attractive, and of course the possibility to add new types like classes to be able to send objects through MPI_Send of Boost, this is certainly attractive, but again I do not want to get dependent of a library as I said, this is my major concern. . Ray smime.p7s Description: S/MIME cryptographic signature PGP.sig Description: Ceci est une signature électronique PGP
Re: [OMPI users] MPI and C++ (Boost)
Hi Luis, Luis Vitorio Cargnini wrote: Thanks, but I really do not want to use Boost. Is easier ? certainly is, but I want to make it using only MPI itself and not been dependent of a Library, or templates like the majority of boost a huge set of templates and wrappers for different libraries, implemented in C, supplying a wrapper for C++. I admit Boost is a valuable tool, but in my case, as much independent I could be from additional libs, better. I've used Boost MPI before and it really isn't that bad and shouldn't be seen as "just another library". Many parts of Boost are on their way to being part of the standard and are discussed and debated on. And so, it isn't the same as going to some random person's web page and downloading their library/template. Of course, it takes time to make it into the standard and I'm not entirely sure if everything will (probably not). (One "annoying" thing about Boost MPI is that you have to compile it...if you are distributing your code, end-users might find that bothersome...oh, and serialization as well.) One suggestion might be to make use of Boost and once you got your code working, start changing it back. At least you will have a working program to compare against. Kind of like writing a prototype first... Ray