Open alephpiece opened 3 years ago
Thanks @alephpiece , this looks interesting! I've not used spack myself, but I know that it's widely used on clusters, supercomputers etc, so having a BOUT++ spack config would be useful.
Is this something we need to maintain in the BOUT++ repo ourselves? Or does the config file go in some official spack repo (like conda)?
Actually, I think the people at LLNL might have already done something with this -- @jonesholger is the spack stuff you've done specific to LLNL machines?
Thanks @alephpiece , this looks interesting! I've not used spack myself, but I know that it's widely used on clusters, supercomputers etc, so having a BOUT++ spack config would be useful.
Is this something we need to maintain in the BOUT++ repo ourselves? Or does the config file go in some official spack repo (like conda)?
Yes, it's just like conda. Spack has a builtin repo maintained by its contributors. I didn't find BOUT++ there so I have to create the package myself.
If there is already some BOUT++ configuration for Spack at some local repo, maybe it is time to push it to Spack? I could really use a fully tested Spack package to try BOUT++ on some machines.
Some progress on Spack packaging for BOUT++: I've created a BOUT-spack
repository: https://github.com/boutproject/BOUT-spack that we can use to host Spack packages. A difficulty is that BOUT-dev contains both the library and lots of examples. I don't know how those examples should be packaged.
Spack is very good at building scientific software and is useful for users who want to build BOUT++ from scratch. However, I didn't find an official configuration for BOUT++ yet. I think it could be very helpful if there is one.
I have been trying to build BOUT++ on my system with Spack for a while. It seems like almost every dependency required by BOUT++ is satisfied with packages in the Spack official repo. Here is a list:
autoconf
andautomake
cmake
MPICH
,OpenMPI
, etc.hdf5
netcdf-c
,netcdf-cxx4
netlib-lapack
, etc. (BOUT++ is searching forlibblas
so the libraries provided by packages likescalapack
could not be used directly)fftw@3:
sundials
, includingCVODE
,IDA
, andARKODE
petsc@3.4.0:
slepc@3.4.0:
mumps
(forgcc@10
, the flag-fallow-argument-mismatch
should be passed in)scorep
py-netcdf4
, etc.I have successfully built the BOUT++ library with these packages and linked it to the example
conduction
.Here is my simple configuration without a test stage.
With this configuration, commands for installing/uninstalling BOUT++ could be simplified to something like