Skip to content

netcdf: Eliminate spurious dependence on hdf5+mpi#10788

Merged
scheibelp merged 1 commit intospack:developfrom
gsjaardema:patch-10
Mar 7, 2019
Merged

netcdf: Eliminate spurious dependence on hdf5+mpi#10788
scheibelp merged 1 commit intospack:developfrom
gsjaardema:patch-10

Conversation

@gsjaardema
Copy link
Copy Markdown
Contributor

Without the change in this PR, NetCDF will always depend on a +mpi variant of hdf5. The best I can determine is that the simple specification of depends_on('[email protected]:+hl') will always select the +mpi hdf5 variant whether +mpi or ~mpi were specified for NetCDF:

ews00321:spack(develop)> spack spec netcdf+mpi
Input spec
--------------------------------
netcdf+mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]~cuda+cxx_exceptions fabrics=auto ~java~legacylaunchers~memchecker~pmi schedulers=auto ~sqlite3~thread_multiple+vt arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 

ews00321:spack(develop)> spack spec netcdf~mpi
Input spec
--------------------------------
netcdf~mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 ~mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]~cuda+cxx_exceptions fabrics=auto ~java~legacylaunchers~memchecker~pmi schedulers=auto ~sqlite3~thread_multiple+vt arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 

With the change in this PR, the ~mpi variant now shows:

ews00321:spack(develop)> spack spec netcdf~mpi
Input spec
--------------------------------
netcdf~mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 ~mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl~mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 

which does not have the openmpi dependency and is correct.

Without the change in this PR, NetCDF will always depend on a `+mpi` variant of hdf5.  The best I can determine is that the simple specification of `depends_on('[email protected]:+hl')` will always select the `+mpi` hdf5 variant whether `+mpi` or `~mpi` were specified for NetCDF:
```
ews00321:spack(develop)> spack spec netcdf+mpi
Input spec
--------------------------------
netcdf+mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]~cuda+cxx_exceptions fabrics=auto ~java~legacylaunchers~memchecker~pmi schedulers=auto ~sqlite3~thread_multiple+vt arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 

ews00321:spack(develop)> spack spec netcdf~mpi
Input spec
--------------------------------
netcdf~mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 ~mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]~cuda+cxx_exceptions fabrics=auto ~java~legacylaunchers~memchecker~pmi schedulers=auto ~sqlite3~thread_multiple+vt arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 
```

With the change in this PR, the `~mpi` variant now shows:
```
ews00321:spack(develop)> spack spec netcdf~mpi
Input spec
--------------------------------
netcdf~mpi

Concretized
--------------------------------
[email protected]%[email protected]~dap~hdf4 maxdims=1024 maxvars=8192 ~mpi~parallel-netcdf+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected]~cxx~debug~fortran+hl~mpi+pic+shared~szip~threadsafe arch=linux-rhel7-x86_64 
        ^[email protected]%[email protected]+optimize+pic+shared arch=linux-rhel7-x86_64 
    ^[email protected]%[email protected] patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-rhel7-x86_64 
``` 
which does not have the `openmpi` dependency and is correct.
@scheibelp scheibelp merged commit c19df8b into spack:develop Mar 7, 2019
@scheibelp
Copy link
Copy Markdown
Member

You may have expected not to need to specify depends_on(hdf5~mpi, when=~mpi) because of the conflict: FYI conflict declarations don't actually affect concretization for the moment - they just document incompatible requests to avoid obscure error messages in the install phase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants