From ceab18a7a658291e16324343f98ccc43095476ed Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Wed, 10 Jan 2024 03:29:00 -0800 Subject: [PATCH 1/3] Add metis to spack build --- deploy/bootstrap.py | 13 ++++++++++--- deploy/conda-dev-spec.template | 2 +- deploy/default.cfg | 1 + deploy/shared.py | 1 - 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/deploy/bootstrap.py b/deploy/bootstrap.py index 8ddf8dd6c..117b88bfe 100755 --- a/deploy/bootstrap.py +++ b/deploy/bootstrap.py @@ -291,9 +291,9 @@ def build_conda_env(config, env_type, recreate, mpi, conda_mpi, version, mpi_prefix=mpi_prefix, include_mache=not local_mache) - for package in ['esmf', 'geometric_features', 'mache', 'mpas_tools', - 'netcdf_c', 'netcdf_fortran', 'otps', 'parallelio', - 'pnetcdf']: + for package in ['esmf', 'geometric_features', 'mache', 'metis', + 'mpas_tools', 'netcdf_c', 'netcdf_fortran', 'otps', + 'parallelio', 'pnetcdf']: replacements[package] = config.get('deploy', package) spec_file = template.render(**replacements) @@ -538,6 +538,7 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 albany = config.get('deploy', 'albany') cmake = config.get('deploy', 'cmake') lapack = config.get('deploy', 'lapack') + metis = config.get('deploy', 'metis') petsc = config.get('deploy', 'petsc') scorpio = config.get('deploy', 'scorpio') @@ -565,6 +566,8 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 include_e3sm_lapack = False else: include_e3sm_lapack = True + if metis != 'None': + specs.append(f'"metis@{metis}"') if petsc != 'None': specs.append(f'"petsc@{petsc}+mpi+batch"') @@ -637,6 +640,10 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 f'export LAPACK={spack_view}\n' \ f'export USE_LAPACK=true\n' + if metis != 'None': + env_vars = f'{env_vars}' \ + f'export PARMETIS_ROOT={spack_view}\n' + if petsc != 'None': env_vars = f'{env_vars}' \ f'export PETSC={spack_view}\n' \ diff --git a/deploy/conda-dev-spec.template b/deploy/conda-dev-spec.template index 1c3d9b1a0..547e1a4a7 100644 --- a/deploy/conda-dev-spec.template +++ b/deploy/conda-dev-spec.template @@ -22,7 +22,7 @@ lxml mache={{ mache }} {% endif %} matplotlib-base >=3.6.0,!=3.7.2 -metis +metis={{ metis }} mpas_tools={{ mpas_tools }} nco netcdf4=*=nompi_* diff --git a/deploy/default.cfg b/deploy/default.cfg index 331d1fe24..7b476cc55 100644 --- a/deploy/default.cfg +++ b/deploy/default.cfg @@ -28,6 +28,7 @@ parallelio = 2.6.0 # versions of conda or spack packages (depending on machine type) esmf = 8.4.2 +metis = 5.1.0 netcdf_c = 4.9.2 netcdf_fortran = 4.6.1 pnetcdf = 1.12.3 diff --git a/deploy/shared.py b/deploy/shared.py index b8bc9559d..1567961d7 100644 --- a/deploy/shared.py +++ b/deploy/shared.py @@ -181,7 +181,6 @@ def install_miniforge(conda_base, activate_base, logger): commands = f'{activate_base} && ' \ f'conda config --add channels conda-forge && ' \ f'conda config --set channel_priority strict && ' \ - f'conda install -y "conda>=23.1.0" && ' \ f'conda update -y --all && ' \ f'conda init --no-user' From 32479bdf32f34fbec184647d3053fe6b28efaf4f Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Wed, 10 Jan 2024 05:16:59 -0800 Subject: [PATCH 2/3] Add parmetis to spack build --- deploy/bootstrap.py | 7 +++++++ deploy/default.cfg | 1 + 2 files changed, 8 insertions(+) diff --git a/deploy/bootstrap.py b/deploy/bootstrap.py index 117b88bfe..b195978b0 100755 --- a/deploy/bootstrap.py +++ b/deploy/bootstrap.py @@ -539,6 +539,7 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 cmake = config.get('deploy', 'cmake') lapack = config.get('deploy', 'lapack') metis = config.get('deploy', 'metis') + parmetis = config.get('deploy', 'parmetis') petsc = config.get('deploy', 'petsc') scorpio = config.get('deploy', 'scorpio') @@ -568,6 +569,8 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 include_e3sm_lapack = True if metis != 'None': specs.append(f'"metis@{metis}"') + if parmetis != 'None': + specs.append(f'"parmetis@{parmetis}"') if petsc != 'None': specs.append(f'"petsc@{petsc}+mpi+batch"') @@ -641,6 +644,10 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 f'export USE_LAPACK=true\n' if metis != 'None': + env_vars = f'{env_vars}' \ + f'export METIS_ROOT={spack_view}\n' + + if parmetis != 'None': env_vars = f'{env_vars}' \ f'export PARMETIS_ROOT={spack_view}\n' diff --git a/deploy/default.cfg b/deploy/default.cfg index 7b476cc55..62da4cbde 100644 --- a/deploy/default.cfg +++ b/deploy/default.cfg @@ -39,5 +39,6 @@ albany = develop cmake = 3.23.0: hdf5 = 1.14.1 lapack = 3.9.1 +parmetis = 4.0.3 petsc = 3.19.1 scorpio = 1.4.1 From 1a92f82bf32194267e53b129d55b5bee0fe6b856 Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Wed, 10 Jan 2024 05:46:51 -0800 Subject: [PATCH 3/3] Build metis and parmetis as static libs --- deploy/bootstrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/bootstrap.py b/deploy/bootstrap.py index b195978b0..3a23b1c37 100755 --- a/deploy/bootstrap.py +++ b/deploy/bootstrap.py @@ -568,9 +568,9 @@ def build_spack_libs_env(config, update_spack, machine, compiler, # noqa: C901 else: include_e3sm_lapack = True if metis != 'None': - specs.append(f'"metis@{metis}"') + specs.append(f'"metis@{metis}~shared"') if parmetis != 'None': - specs.append(f'"parmetis@{parmetis}"') + specs.append(f'"parmetis@{parmetis}~shared"') if petsc != 'None': specs.append(f'"petsc@{petsc}+mpi+batch"')