Re: Adding MPI back to Boost

2014-12-17 Thread Sean Farley
Anyone opposed to me pushes the proposed changes and marking them fixed?

Sean Farley writes:

 Ryan Schmidt writes:

 On Dec 14, 2014, at 12:21 PM, Sean Farley wrote:
 
 Ryan Schmidt writes:
 
 So, this would add clang33, clang34, clang35 variants, for example? But 
 these would be different from the clang 3.x provided by Xcode in some way? 
 The MacPorts clang ports would be able to use MPI somehow, while Xcode 
 clang would not?
 
 ... ?

 That's a bit how I feel about this mpi business, yes.

 :-/

 First of all, for the sake of completeness, the list of variants would
 be:
 
 $ port info boost
 boost @1.56.0_2 (devel)
 Variants: clang31, clang32, clang33, clang34, clang35, debug, 
 mpich, mpich_devel, [+]no_single, [+]no_static, openmpi, openmpi_devel, 
 python25, python26, [+]python27, python31, python32, python33, python34, 
 regex_match_extra, universal
 
 The reason I wrote the mpi and compilers portgroup was because there was
 no way to make sure the same compiler for both is selected. For example,
 
 $ port install boost +clang35 +mpich
 
 will install mpich (built with clang35 compilers) and boost (built with
 clang35 compilers).

 Only if mpich had not already been installed with a different variant, since 
 MacPorts does not have the capability to declare dependencies on variants 
 (ticket #126).

 Not in this case. The mpi portgroup forces the same active compilers.

 Is the correspondence of variants between e.g. boost and mpich required? In 
 other words, if mpich is installed with +clang35, does that mean boost 
 *must* use the +clang35 variant as well if one wants to use the +mpich 
 variant, or would it work if +clang34 or clang from Xcode is used for boost?

 Yes, the same must be used across the board.

 The clang provided by Xcode can be used, of course, which is the
 default:
 
 $ port install boost +mpich
 
 will install mpich (built with Xcode compilers) and boost (built with
 Xcode compilers). This will change depending on the OS version.

 Under what circumstances would using Xcode clang not be sufficient? In other 
 words, why would we ever want MacPorts clang variants?

 As Eric pointed out, it's for experimenting. This is exactly the same as
 the reason ATLAS uses different compilers: sometimes there is a speed
 improvement.

 Perhaps you're missing that MPI is a library that provide compiler
 *wrappers*? If a package needs MPI then that package is compiled with:
 
 CC=mpicc
 CXX=mpicxx
 FC=mpifort
 etc.

 Sure, I'm missing that, and probably a lot of other things. For example: 
 what is the goal? What does adding mpi support to boost do? Why would 
 someone want this?

 So that a package could use Boost.MPI (such as dolfin does).

 MPI falls under the category of scientific computing. This changes a few
 presumptions: the goal here is numerical computation (matrix vector
 operations).

 Having one implementation just isn't feasible. Science users want to
 experiment with each combination. You could say it's part of their
 nature.

___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Mark Moll
 On Dec 14, 2014, at 2:28 AM, Sean Farley s...@macports.org wrote:
 
 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).

This seems like a good idea. Unless (a) you can use gcc for all of boost’s 
dependents and (b) there are actual use cases where this would be useful, I’d 
say that removing gcc variants is a good idea. Mixing libc++ and libstdc++ in 
boost dependents is bound to lead to problems.

--
Mark Moll



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Ryan Schmidt

On Dec 14, 2014, at 2:28 AM, Sean Farley wrote:

 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).

Right, using gcc variants causes the use of libstdc++ which causes the problem 
on Mavericks and later.

So, without gcc variants, what variants remain?

___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Sean Farley

Mark Moll writes:

 On Dec 14, 2014, at 2:28 AM, Sean Farley s...@macports.org wrote:
 
 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).

 This seems like a good idea. Unless (a) you can use gcc for all of boost’s 
 dependents and (b) there are actual use cases where this would be useful, I’d 
 say that removing gcc variants is a good idea. Mixing libc++ and libstdc++ in 
 boost dependents is bound to lead to problems.

(a) That would require depending on a variant which I don't want to put
the work into. I wrote a script to do this manually for myself but
it is still a headache.

(b) Depends on how useful you think testing different compiler speed /
output is: I would have used it to test dolfin (FEniCS) builds with
gcc vs clang.
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Sean Farley

Ryan Schmidt writes:

 On Dec 14, 2014, at 2:28 AM, Sean Farley wrote:

 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).

 Right, using gcc variants causes the use of libstdc++ which causes the 
 problem on Mavericks and later.

 So, without gcc variants, what variants remain?

clang 3.x and all versions of dragonegg. Multiple that set with all the
mpi choices, too.
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Ryan Schmidt

On Dec 14, 2014, at 11:41 AM, Sean Farley wrote:

 Ryan Schmidt writes:
 
 On Dec 14, 2014, at 2:28 AM, Sean Farley wrote:
 
 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).
 
 Right, using gcc variants causes the use of libstdc++ which causes the 
 problem on Mavericks and later.
 
 So, without gcc variants, what variants remain?
 
 clang 3.x and all versions of dragonegg. Multiple that set with all the
 mpi choices, too.

So, this would add clang33, clang34, clang35 variants, for example? But these 
would be different from the clang 3.x provided by Xcode in some way? The 
MacPorts clang ports would be able to use MPI somehow, while Xcode clang would 
not?

___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Sean Farley

Ryan Schmidt writes:

 On Dec 14, 2014, at 11:41 AM, Sean Farley wrote:

 Ryan Schmidt writes:
 
 On Dec 14, 2014, at 2:28 AM, Sean Farley wrote:
 
 So, I've added support into the compilers portgroup for working with
 the compiler.blacklist variable but that doesn't fix the issue that Ryan
 tried to fix with r125939:
 
 https://trac.macports.org/changeset/125939
 
 It seems instead that the fix is just to remove the gcc variants:
 
 mpi.setup -gcc
 
 Is there anything wrong with this proposed fix? If no one objects, I'll
 push my changesets which 1) add blacklist support to the compilers
 portgroup and 2) add mpi portgroup to boost (but remove gcc variants).
 
 Right, using gcc variants causes the use of libstdc++ which causes the 
 problem on Mavericks and later.
 
 So, without gcc variants, what variants remain?
 
 clang 3.x and all versions of dragonegg. Multiple that set with all the
 mpi choices, too.

 So, this would add clang33, clang34, clang35 variants, for example? But these 
 would be different from the clang 3.x provided by Xcode in some way? The 
 MacPorts clang ports would be able to use MPI somehow, while Xcode clang 
 would not?

... ?

First of all, for the sake of completeness, the list of variants would
be:

$ port info boost
boost @1.56.0_2 (devel)
Variants: clang31, clang32, clang33, clang34, clang35, debug, 
mpich, mpich_devel, [+]no_single, [+]no_static, openmpi, openmpi_devel, 
python25, python26, [+]python27, python31, python32, python33, python34, 
regex_match_extra, universal

The reason I wrote the mpi and compilers portgroup was because there was
no way to make sure the same compiler for both is selected. For example,

$ port install boost +clang35 +mpich

will install mpich (built with clang35 compilers) and boost (built with
clang35 compilers).

The clang provided by Xcode can be used, of course, which is the
default:

$ port install boost +mpich

will install mpich (built with Xcode compilers) and boost (built with
Xcode compilers). This will change depending on the OS version.

Perhaps you're missing that MPI is a library that provide compiler
*wrappers*? If a package needs MPI then that package is compiled with:

CC=mpicc
CXX=mpicxx
FC=mpifort
etc.
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Ryan Schmidt

On Dec 14, 2014, at 12:21 PM, Sean Farley wrote:
 
 Ryan Schmidt writes:
 
 So, this would add clang33, clang34, clang35 variants, for example? But 
 these would be different from the clang 3.x provided by Xcode in some way? 
 The MacPorts clang ports would be able to use MPI somehow, while Xcode clang 
 would not?
 
 ... ?

That's a bit how I feel about this mpi business, yes.


 First of all, for the sake of completeness, the list of variants would
 be:
 
 $ port info boost
 boost @1.56.0_2 (devel)
 Variants: clang31, clang32, clang33, clang34, clang35, debug, 
 mpich, mpich_devel, [+]no_single, [+]no_static, openmpi, openmpi_devel, 
 python25, python26, [+]python27, python31, python32, python33, python34, 
 regex_match_extra, universal
 
 The reason I wrote the mpi and compilers portgroup was because there was
 no way to make sure the same compiler for both is selected. For example,
 
 $ port install boost +clang35 +mpich
 
 will install mpich (built with clang35 compilers) and boost (built with
 clang35 compilers).

Only if mpich had not already been installed with a different variant, since 
MacPorts does not have the capability to declare dependencies on variants 
(ticket #126).

Is the correspondence of variants between e.g. boost and mpich required? In 
other words, if mpich is installed with +clang35, does that mean boost *must* 
use the +clang35 variant as well if one wants to use the +mpich variant, or 
would it work if +clang34 or clang from Xcode is used for boost?


 The clang provided by Xcode can be used, of course, which is the
 default:
 
 $ port install boost +mpich
 
 will install mpich (built with Xcode compilers) and boost (built with
 Xcode compilers). This will change depending on the OS version.

Under what circumstances would using Xcode clang not be sufficient? In other 
words, why would we ever want MacPorts clang variants?


 Perhaps you're missing that MPI is a library that provide compiler
 *wrappers*? If a package needs MPI then that package is compiled with:
 
 CC=mpicc
 CXX=mpicxx
 FC=mpifort
 etc.

Sure, I'm missing that, and probably a lot of other things. For example: what 
is the goal? What does adding mpi support to boost do? Why would someone want 
this?


___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Eric A. Borisch
On Sunday, December 14, 2014, Ryan Schmidt ryandes...@macports.org wrote:


 On Dec 14, 2014, at 12:21 PM, Sean Farley wrote:
 
  Ryan Schmidt writes:
 
  So, this would add clang33, clang34, clang35 variants, for example? But
 these would be different from the clang 3.x provided by Xcode in some way?
 The MacPorts clang ports would be able to use MPI somehow, while Xcode
 clang would not?
 
  ... ?

 That's a bit how I feel about this mpi business, yes.


  First of all, for the sake of completeness, the list of variants would
  be:
 
  $ port info boost
  boost @1.56.0_2 (devel)
  Variants: clang31, clang32, clang33, clang34, clang35,
 debug, mpich, mpich_devel, [+]no_single, [+]no_static, openmpi,
 openmpi_devel, python25, python26, [+]python27, python31, python32,
 python33, python34, regex_match_extra, universal
 
  The reason I wrote the mpi and compilers portgroup was because there was
  no way to make sure the same compiler for both is selected. For example,
 
  $ port install boost +clang35 +mpich
 
  will install mpich (built with clang35 compilers) and boost (built with
  clang35 compilers).

 Only if mpich had not already been installed with a different variant,
 since MacPorts does not have the capability to declare dependencies on
 variants (ticket #126).

 Is the correspondence of variants between e.g. boost and mpich required?
 In other words, if mpich is installed with +clang35, does that mean boost
 *must* use the +clang35 variant as well if one wants to use the +mpich
 variant, or would it work if +clang34 or clang from Xcode is used for boost?


  The clang provided by Xcode can be used, of course, which is the
  default:
 
  $ port install boost +mpich
 
  will install mpich (built with Xcode compilers) and boost (built with
  Xcode compilers). This will change depending on the OS version.

 Under what circumstances would using Xcode clang not be sufficient? In
 other words, why would we ever want MacPorts clang variants?


Because people using mpich are typically interested in how their code
compiles under multiple different compilers, because they are
often targeting systems other than their mac with the software.

And the different compiler wrapping versions are not variants of mpich, but
are sub-ports that can be installed side by side and explicitly depended
upon.

   - Eric
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev


Re: Adding MPI back to Boost

2014-12-14 Thread Sean Farley

Ryan Schmidt writes:

 On Dec 14, 2014, at 12:21 PM, Sean Farley wrote:
 
 Ryan Schmidt writes:
 
 So, this would add clang33, clang34, clang35 variants, for example? But 
 these would be different from the clang 3.x provided by Xcode in some way? 
 The MacPorts clang ports would be able to use MPI somehow, while Xcode 
 clang would not?
 
 ... ?

 That's a bit how I feel about this mpi business, yes.

:-/

 First of all, for the sake of completeness, the list of variants would
 be:
 
 $ port info boost
 boost @1.56.0_2 (devel)
 Variants: clang31, clang32, clang33, clang34, clang35, debug, 
 mpich, mpich_devel, [+]no_single, [+]no_static, openmpi, openmpi_devel, 
 python25, python26, [+]python27, python31, python32, python33, python34, 
 regex_match_extra, universal
 
 The reason I wrote the mpi and compilers portgroup was because there was
 no way to make sure the same compiler for both is selected. For example,
 
 $ port install boost +clang35 +mpich
 
 will install mpich (built with clang35 compilers) and boost (built with
 clang35 compilers).

 Only if mpich had not already been installed with a different variant, since 
 MacPorts does not have the capability to declare dependencies on variants 
 (ticket #126).

Not in this case. The mpi portgroup forces the same active compilers.

 Is the correspondence of variants between e.g. boost and mpich required? In 
 other words, if mpich is installed with +clang35, does that mean boost *must* 
 use the +clang35 variant as well if one wants to use the +mpich variant, or 
 would it work if +clang34 or clang from Xcode is used for boost?

Yes, the same must be used across the board.

 The clang provided by Xcode can be used, of course, which is the
 default:
 
 $ port install boost +mpich
 
 will install mpich (built with Xcode compilers) and boost (built with
 Xcode compilers). This will change depending on the OS version.

 Under what circumstances would using Xcode clang not be sufficient? In other 
 words, why would we ever want MacPorts clang variants?

As Eric pointed out, it's for experimenting. This is exactly the same as
the reason ATLAS uses different compilers: sometimes there is a speed
improvement.

 Perhaps you're missing that MPI is a library that provide compiler
 *wrappers*? If a package needs MPI then that package is compiled with:
 
 CC=mpicc
 CXX=mpicxx
 FC=mpifort
 etc.

 Sure, I'm missing that, and probably a lot of other things. For example: what 
 is the goal? What does adding mpi support to boost do? Why would someone want 
 this?

So that a package could use Boost.MPI (such as dolfin does).

MPI falls under the category of scientific computing. This changes a few
presumptions: the goal here is numerical computation (matrix vector
operations).

Having one implementation just isn't feasible. Science users want to
experiment with each combination. You could say it's part of their
nature.
___
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev