Commit Graph

63 Commits

Author SHA1 Message Date
Greg Becker
dd3762d0f9
cray platform: support cray Cluster and XC type machines (#12989)
Cray has two machine types. "XC" machines are the larger
machines more common in HPC, but "Cluster" machines are
also cropping up at some HPC sites. Cluster machines run
a slightly different form of the CrayPE programming environment,
and often come without default modules loaded. Cluster
machines also run different versions of some software, and run
a linux distro on the backend nodes instead of running Compute 
Node Linux (CNL).

Below are the changes made to support "Cluster" machines in
Spack. Some of these changes are semi-related general upkeep
of the cray platform.

* cray platform: detect properly after module purge

* cray platform: support machines running OSs other than CNL

Make Cray backend OS delegate to LinuxDistro when no cle_release file
favor backend over frontend OS when name clashes

* cray platform: target detection uses multiple strategies

This commit improves the robustness of target
detection on Cray by trying multiple strategies.

The first one that produces results wins. If
nothing is found only the generic family of the
frontend host is used as a target.

* cray-libsci: add package from NERSC

* build_env: unload cray-libsci module when not explicitly needed

cray-libsci is a package in Spack. The cray PrgEnv
modules load it implicitly when we set up the compiler.
We now unload it after setting up the compiler and
only reload it when requested via external package.

* util/module_cmd: more robust module parsing

Cray modules have documentation inside the module
that is visible to the `module show` command.
Spack module parsing is now robust to documentation 
inside modules.

* cce compiler: uses clang flags for versions >= 9.0

* build_env: push CRAY_LD_LIBRARY_PATH into everything

Some Cray modules add paths to CRAY_LD_LIBRARY_PATH
instead of LD_LIBRARY_PATH. This has performance benefits
at load time, but leads to Spack builds not finding their
dependencies from external modules.
Spack now prepends CRAY_LD_LIBRARY_PATH to
LD_LIBRARY_PATH before beginning the build.

* mvapich2: setup cray compilers when on cray

previously, mpich was the only mpi implementation to support
cray systems (because it is the MPI on Cray XC systems). 
Cray cluster systems use mvapich2, which now supports cray
compiler wrappers.

* build_env: clean pkgconf from environment

Cray modules silently add pkgconf to the user environment
This can break builds that do not user pkgconf.
Now we remove it frmo the environment and add it again if it
is in the spec. 

* cray platform: cheat modules for rome/zen2 module on naples/zen node

Cray modules for naples/zen architecture currently specify
rome/zen2. For now, we detect this and return zen for modules
named `craype-x86-rome`.

* compiler: compiler default versions

When detecting compiler default versions for target/compiler
compatibility checks, Spack previously ran the compiler without
setting up its environment. Now we setup a temporary environment
to run the compiler with its modules to detect its version.

* compilers/cce: improve logic to determine C/C++ std flags

* tests: fix existing tests to play nicely with new cray support

* tests: test new functionality

Some new functionality can only be tested on a cray system.
Add tests for what can be tested on a linux system.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-05-05 13:58:46 -07:00
Nithin Senthil Kumar
b522296a5a
Update MVAPICH2 package for 2.3.3 release (#15578)
Co-authored-by: senthilkumar.16 <senthilkumar.16@nowlab.cse.ohio-state.edu>
2020-03-19 20:59:00 -05:00
Todd Gamblin
4af6303086
copyright: update copyright dates for 2020 (#14328) 2019-12-30 22:36:56 -08:00
Hari Subramoni
1a6bba1632 Update MVAPICH2 package for 2.3.2 release (#13236)
* Update MVAPICH2 package for 2.3.2 release
Update default build from psm to mrail

* Update different provides for older versions based on feedback from Todd Gamblin

* Simplify rule so one rule covers 2.1 and 2.2

* Add support for disabling rpath based on feedback from Dr. Shende

* Add colon based on comment

* Address review comment by Adam Stewart

* Add declaration of the wrapperpath variant.
    - Thanks to Massimiliano Culpo for the comment
2019-11-13 15:18:35 -06:00
Massimiliano Culpo
826e8c6394 athena, mvapich2, spectrum-mpi: use new API to setup environment (#13677)
* athena: updated api call to setup build environment

* mvapich2: updated api call to setup build and run environment

* spectrum-mpi: updated api call to setup build and run environment
2019-11-12 11:44:12 -06:00
Todd Gamblin
00f91ab22b checksums: Remove or fix up unfetchable or unverifiable md5 versions
This commit either removes remaining md5 checksums, or it replaces them
with sha256 checksums verified by fetching over https.
2019-10-12 07:19:43 -07:00
Todd Gamblin
62927654dd checksums: use sha256 checksums everywhere
We'd like to use a consistent checksum scheme everywhere so that we can:

    a) incorporate archive checksums into our specs and have a
       consistent hashing algorithm across all specs.

    b) index mirrors with a consistent type of checksum, and not one that
       is dependent on how spack packages are written.

- [x] convert existing md5, sha224, sha512, sha1 checksums to sha256
2019-10-12 07:19:43 -07:00
Jeffrey Salmond
a41014ed9e mvapich2 depends on slurm when built with process_managers=slurm (#12489) 2019-08-20 16:43:28 -05:00
Gregory Lee
8625faefc9 mvapich2 package: add version 2.3.1 (#11037) 2019-04-02 17:07:06 -07:00
Stas Sergienko
9ffd508d7c mpich: add psm2 fabric support (#10814)
psm2 is only supported for versions 2.2 and up, so a conflict is
added for earlier versions
2019-03-11 20:10:02 -05:00
Michael Kuhn
bcee3efecd mvapich2: Improve package (#10642)
- Add support for nemesis:ofi netmod
- Add missing pkg-config and libxml2 dependencies
2019-02-19 11:02:02 +01:00
Massimiliano Culpo
c4521535e7 Multi-valued variants: better support for combinations (#9481)
This enforces conventions that allow for correct handling of
multi-valued variants where specifying no value is an option,
and adds convenience functionality for specifying multi-valued
variants with conflicting sets of values. This also adds a notion
of "feature values" for variants, which are those that are understood
by the build system (e.g. those that would appear as configure
options). In more detail:

* Add documentation on variants to the packaging guide
* Forbid usage of '' or None as a possible variant value, in
  particular as a default. To indicate choosing no value, the user
  must explicitly define an option like 'none'. Without this,
  multi-valued variants with default set to None were not parsable
  from the command line (Fixes #6314)
* Add "disjoint_sets" function to support the declaration of
  multi-valued variants with conflicting sets of options. For example
  a variant "foo" with possible values "a", "b", and "c" where "c"
  is exclusive of the other values ("foo=a,b" and "foo=c" are
  valid but "foo=a,c" is not).
* Add "any_combination_of" function to support the declaration of
  multi-valued variants where it is valid to choose none of the
  values. This automatically defines "none" as an option (exclusive
  with all other choices); this value does not appear when iterating
  over the variant's values, for example in "with_or_without" (which
  constructs autotools option strings from variant values).
* The "disjoint_sets" and "any_combination_of" methods return an
  object which tracks the possible values. It is also possible to
  indicate that some of these values do not correspond to options
  understood by the package's build system, such that methods like
  "with_or_without" will not define options for those values (this
  occurs automatically for "none")
* Add documentation for usage of new functions for specifying
  multi-valued variants
2019-01-04 19:02:34 -08:00
Michael Kuhn
051057caa3 mvapich2: add missing zlib dependency (#10254) 2019-01-04 20:52:00 -06:00
Todd Gamblin
6f50cd52ed copyright: update license headers for 2013-2019 copyright. 2019-01-01 00:44:28 -08:00
Todd Gamblin
eea786f4e8 relicense: replace LGPL headers with Apache-2.0/MIT SPDX headers
- remove the old LGPL license headers from all files in Spack
- add SPDX headers to all files
  - core and most packages are (Apache-2.0 OR MIT)
  - a very small number of remaining packages are LGPL-2.1-only
2018-10-17 14:42:06 -07:00
Michael Kuhn
e176f2a2f5 Fix missing dependencies and glibc build failures (#9106)
* bison: Add missing build dependencies

bison also depends on cmp, which is currently not available in Spack.

* help2man: Add missing build dependency

* m4: Fix build with newer versions of glibc

* openssl: Add missing build dependency

openssl's configure script is actually a Perl script.

* texinfo: Add missing perl dependency

* diffutils: New package

* findutils: Fix build with newer versions of glibc

* mvapich2, mpich: Add missing findutils dependency
2018-10-10 14:17:12 +02:00
Michael Kuhn
983957f7c0 mvapich2: Use rdma-core for mrail and nemesis*ib* fabrics (#9072) 2018-08-23 07:32:46 -05:00
健美猞猁
4dc8936b63 Bump mvapich2 to the latest v2.3 release. (#8892) 2018-08-06 12:03:33 +02:00
Jon Rood
e367d1fb3a Unset F90 and F90FLAGS in mvapich2 (#8698)
* Unset F90 in mvapich2 when using intel compilers.

* Fixing typo.

* Unset F90 and F90FLAGS for mvapich2 at all times.

* Adding comment.
2018-07-13 20:32:02 -05:00
Jon Rood
a1bfa8eca0 Adding psm as a dependency of mvapich2. (#8674) 2018-07-10 19:32:50 -05:00
Massimiliano Culpo
0ea8c4f3b2 mvapich2: added a proper libs attribute (#8253) 2018-05-23 13:28:21 -05:00
Adam Moody
7909e15d83 mvapich2: add 2.3rc2 (#7976) 2018-05-02 14:23:32 -05:00
Adam Moody
29b47e0e01 mvapich2: add registration cache and file systems variants (#7948)
* mvapich2: add registration cache and file systems variants, avoid empty --with-pm= if no process manager is specified, add missing leading dash in --disable-silent-rules
2018-04-30 18:12:13 -07:00
Massimiliano Culpo
79251dde40
mvapich2: added version 2.3rc1 + variant to use alloca if available (#7595)
* mvapich2: added version 2.3rc1 + variant to use alloca if available

* mvapich2: removed version 1.9 + cleaned recipe
2018-04-04 09:41:37 +02:00
Todd Gamblin
54f97d1dec
Update copyright on LLNL files for 2018. (#7592) 2018-03-24 12:13:52 -07:00
alalazo
c62b3eef55 filter_compiler_path: added the possibility to narrow search path
Following a comment from Todd, the search path for the files listed in
`filter_compiler_wrappers` can now be narrowed. Anyhow, the function
implementation still makes use of `find`, the rationale being that we
have already seen packages that install artifacts in e.g. architecture
dependent folders. The possibility to have a relative search path might
be a good compromise between the previous approach and the one suggested
in the review.

Also: 'ignore_absent' and 'backup' keyword arguments can be optionally
forwarded to `filter_file`.
2018-02-13 02:18:28 -08:00
alalazo
a01a68218c mvapich2: ported 2e6a735b00 2018-02-13 02:18:28 -08:00
alalazo
22def01adf mixins: implemented declarative syntax
Implemented a declarative syntax for the additional behavior that can
get attached to classes. Implemented a function to filter compiler
wrappers that uses the mechanism above.
2018-02-13 02:18:28 -08:00
alalazo
8e0f9038ab Improved naming of properties and classes (per Denis comments). 2018-02-13 02:18:28 -08:00
alalazo
28e129b087 Added mixins to modularize common behaviors across build-systems.
Modifications:
  * added a mixin to filter compiler wrappers from files
  * modified hdf5, openmpi, mpich, mvapich2 to use it
2018-02-13 02:18:28 -08:00
Todd Gamblin
05fa302655
Replace github.com/llnl/spack with github.com/spack/spack (#6142)
We moved to a new GitHub org! Now make the code and docs reflect that.
2017-11-04 17:08:04 -07:00
Michael Kuhn
84ae7872d3 Update copyright notices for 2017 (#5295) 2017-09-06 17:44:16 -10:00
健美猫
8a06e3d867 Add cuda variant for mvapich2. (#4800)
* Add cuda variant for mvapich2.

* Disable cuda for mvapich2 by default.
2017-07-23 12:18:05 -05:00
Michael Kuhn
2e6a735b00 mvapich2: Fix mpifort wrapper (#4650) 2017-06-30 11:51:07 -05:00
Todd Gamblin
cac4362f64 Make LICENSE recognizable by GitHub. (#4598) 2017-06-24 22:22:55 -07:00
Adam J. Stewart
cf2178f416 Overhaul CONVERGE installation and concretization (#4397) 2017-06-19 10:18:48 -05:00
Michael Kuhn
a01be73185 Add nemesistcpib fabrics variant (#4197) 2017-05-10 14:37:01 -05:00
Massimiliano Culpo
b32afbbbcb mvapich2: fixed broken reference to spec (#4078) 2017-05-02 11:26:30 +02:00
Massimiliano Culpo
9e4b0eb34a Multi-valued variants (#2386)
Modifications:
- added support for multi-valued variants
- refactored code related to variants into variant.py
- added new generic features to AutotoolsPackage that leverage multi-valued variants
- modified openmpi to use new features
- added unit tests for the new semantics
2017-05-01 13:08:47 -07:00
Adam J. Stewart
9bd6d21322 Add variant to mvapich2 to set size of rank bits (#3886) 2017-04-19 21:31:21 -07:00
Adam J. Stewart
3f21b82815 Add variant to mvapich2 to control thread level (#3832) 2017-04-14 08:14:19 -07:00
Adam J. Stewart
6cf87e3637 Add latest alpha release of MVAPICH2 (#3674) 2017-04-03 13:04:42 -05:00
Erik Schnetter
e7bf8034b0 libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around (#3459)
* libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around

Other packages that depend on libpciaccess can do so via a conditional dependency (via a variant); we don’t need a dummy package for Darwin any more.

* Disable libpciaccess dependency on non-Darwin platforms

* hwloc: Remove direct dependency on libpciaccess
2017-03-17 09:09:09 -05:00
Adam J. Stewart
dca4d2b15e Consistent docs and usage of env mod methods (#3351) 2017-03-14 22:26:44 -07:00
Denis Davydov
46433b9eb3 require fortran for MPI providers to avoid delayed compiler errors (#1937)
* openmpi: require fortran for now

* mpich: requre fortran for now

* mvapich2: require fortran for now

* openmpi: flake8 fixes
2016-10-26 09:12:26 -07:00
Michael Kuhn
7fd44a983d Update mvapich2 to 2.2 (#1775) 2016-09-15 10:42:57 +08:00
Massimiliano Culpo
497bbb3ae3 added package : pexsi (#1550)
* pexsi : added package
* cp2k : added pexsi (works for gcc+openmpi with and without plumed)
2016-09-03 08:13:47 -07:00
Abhinav Bhatele
a9a29d207d add versions 2.2rc2 and 2.1 to the mvapich2 package (#1630) 2016-08-28 20:18:57 -07:00
Todd Gamblin
240f1fd223 Spack packages now PEP8 compliant. 2016-08-10 16:33:39 -07:00
Adam J. Stewart
cf8f14780f MVAPICH2 depends on libpciaccess 2016-07-21 11:13:17 -05:00