Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding GROMACS #61

Closed
wants to merge 35 commits into from
Closed
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
acce1d6
Create gromacs/application.py
pearce8 Nov 29, 2023
720b176
Add gromacs openmp config (#62)
rfhaque Nov 30, 2023
6b70948
Merge remote-tracking branch 'origin/develop' into feature-gromacs
rfhaque Dec 1, 2023
06c2b29
Update repo/gromacs/application.py
pearce8 Dec 5, 2023
0f98c77
Update repo/gromacs/application.py
pearce8 Dec 5, 2023
68e7d28
Merge branch 'develop' into feature-gromacs
pearce8 Dec 5, 2023
1679d15
Merge branch 'develop' into feature-gromacs
pearce8 Dec 14, 2023
f5f723a
copyright
pearce8 Dec 18, 2023
e73ec42
copyright
pearce8 Dec 18, 2023
fa765a6
copyright
pearce8 Dec 18, 2023
aea9180
Merging develop
pearce8 Jan 8, 2024
aeb966c
Merge branch 'develop' into feature-gromacs
pearce8 Jan 16, 2024
05dc3b2
Merge branch 'develop' into feature-gromacs
pearce8 Jan 17, 2024
c1e2112
Merge branch 'develop' into feature-gromacs
pearce8 Jan 20, 2024
992421a
Draft ADAC experiment setup
Jan 30, 2024
7eba856
Merge branch 'develop' into feature-gromacs
pearce8 Feb 5, 2024
1762eea
Merge branch 'develop' into feature-gromacs
pearce8 Feb 6, 2024
4347564
Merge remote-tracking branch 'origin/develop' into feature-gromacs
Feb 8, 2024
0738ba5
CUDA experiment for LLNL-Sierra-IBM-power9-V100-Infiniband
Feb 10, 2024
9f13277
CUDA config for LLNL-Pascal-Penguin-broadwell-P100-OmniPat
Feb 11, 2024
32f84ee
Fix target name
Feb 11, 2024
ee940e6
CUDA config for lassen
Feb 16, 2024
c065093
Fix cuda config
Feb 17, 2024
b8ca5a2
Set Openmp thread affinity to cores
Feb 17, 2024
5f334fe
Fix cuda compiler for gromacs
Feb 17, 2024
5b695ca
Merge branch 'develop' into feature-gromacs
pearce8 Feb 20, 2024
72ff192
gromacs rocm config
Feb 21, 2024
078c4a5
Merge branch 'feature-gromacs' of github.com:LLNL/benchpark into feat…
Feb 21, 2024
5de5699
gromacs rocm config
Feb 22, 2024
3fbc244
Remove spack_setup
Feb 22, 2024
379bac6
Merge with develop
Feb 23, 2024
89ff45a
Merge remote-tracking branch 'origin/develop' into feature-gromacs
Feb 26, 2024
2d4f924
ROCm packages: externals consistency (#150)
scheibelp Mar 4, 2024
5bd8821
Merge remote-tracking branch 'origin/develop' into feature-gromacs
Apr 3, 2024
90ccdd9
Merge with develop
Jun 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@ packages:
- spec: intel-oneapi-mkl@2022.1.0
prefix: /usr/tce/backend/installations/linux-rhel8-x86_64/intel-19.0.4/intel-oneapi-mkl-2022.1.0-sksz67twjxftvwchnagedk36gf7plkrp
buildable: false
hwloc:
externals:
- spec: hwloc@2.9.1
prefix: /usr
buildable: false
fftw:
externals:
- spec: fftw@3.3.10
prefix: /usr/tce/packages/fftw/fftw-3.3.10
buildable: false
mpi:
externals:
- spec: mvapich2@2.3.7-gcc1211
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,16 @@ compilers:
modules: []
environment: {}
extra_rpaths: []
- compiler:
spec: clang@=14.0.6
paths:
cc: /usr/tce/packages/clang/clang-14.0.6/bin/clang
cxx: /usr/tce/packages/clang/clang-14.0.6/bin/clang++
f77: /usr/tce/packages/gcc/gcc-11.2.1/bin/gfortran
fc: /usr/tce/packages/gcc/gcc-11.2.1/bin/gfortran
flags: {}
operating_system: rhel8
target: x86_64
modules: []
environment: {}
extra_rpaths: []
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@ packages:
mvapich2:
buildable: false
externals:
- spec: mvapich2@2.3.7%intel@2021.6.0
- spec: mvapich2@2.3.7-gcc-11.2.1
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you might mean

mvapich2@2.3.7%gcc@11.2.1

vs

mvapich2@2.3.7-gcc-11.2.1

in the former case, Spack will know that mvapich2 was compiled with gcc

prefix: /usr/tce/packages/mvapich2/mvapich2-2.3.7-gcc-11.2.1
- spec: mvapich2@2.3.7-intel-2021.6.0
prefix: /usr/tce/packages/mvapich2/mvapich2-2.3.7-intel-classic-2021.6.0/
- spec: mvapich2@2.3.7-clang-14.0.6
prefix: /usr/tce/packages/mvapich2/mvapich2-2.3.7-clang-14.0.6
cuda:
buildable: false
externals:
Expand All @@ -55,10 +59,22 @@ packages:
prefix: /usr/tce/packages/cuda/cuda-11.8.0
buildable: false
blas:
externals:
- spec: intel-oneapi-mkl@2022.1.0
prefix: /usr/tce/packages/mkl/mkl-2022.1.0
buildable: false
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it will be cleaner to reorganize

  blas:
    externals:
    - spec: intel-oneapi-mkl@2022.1.0
      prefix: /usr/tce/packages/mkl/mkl-2022.1.0
    buildable: false
  lapack:
    externals:
    - spec: intel-oneapi-mkl@2022.1.0
      prefix: /usr/tce/packages/mkl/mkl-2022.1.0
    buildable: false
  intel-oneapi-mkl:
    externals:
    - spec: intel-oneapi-mkl@2022.1.0
      prefix: /usr/tce/packages/mkl/mkl-2022.1.0/
    buildable: false

as

  blas:
    buildable: false
  lapack:
    buildable: false
  intel-oneapi-mkl:
    externals:
    - spec: intel-oneapi-mkl@2022.1.0
      prefix: /usr/tce/packages/mkl/mkl-2022.1.0/
    buildable: false

intel-oneapi-mkl provides both blas and lapack, so this reduces redundancy.

fftw:
externals:
- spec: intel-oneapi-mkl@2022.1.0
prefix: /usr/tce/packages/mkl/mkl-2022.1.0
buildable: false
lapack:
externals:
- spec: intel-oneapi-mkl@2022.1.0
prefix: /usr/tce/packages/mkl/mkl-2022.1.0
buildable: false
intel-oneapi-mkl:
externals:
- spec: intel-oneapi-mkl@2022.1.0
prefix: /usr/tce/packages/mkl/mkl-2022.1.0/
buildable: false
10 changes: 9 additions & 1 deletion configs/LLNL-Pascal-Penguin-broadwell-P100-OmniPath/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,18 @@ spack:
default-compiler:
spack_spec: gcc@=11.2.1
default-mpi:
spack_spec: mvapich2@2.3.7
spack_spec: mvapich2@2.3.7-gcc-11.2.1
compiler-gcc:
spack_spec: gcc@=11.2.1
compiler-clang:
spack_spec: clang@=14.0.6
mpi-clang:
spack_spec: mvapich2@2.3.7-clang-14.0.6
blas:
spack_spec: intel-oneapi-mkl@2022.1.0
cublas-cuda:
spack_spec: cublas@{default_cuda_version}
lapack:
spack_spec: intel-oneapi-mkl@2022.1.0
fftw:
spack_spec: intel-oneapi-mkl@2022.1.0
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ variables:
mpi_command: 'srun -N {n_nodes} -n {n_ranks}'
batch_submit: 'sbatch {execute_experiment}'
batch_nodes: '#SBATCH -N {n_nodes}'
batch_ranks: '#SBATCH -n {n_ranks}'
batch_ranks: '#SBATCH -n {n_ranks} -G {n_ranks}'
batch_timeout: '#SBATCH -t {batch_time}:00'
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,19 @@ compilers:
modules: []
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(for another PR) I noticed when looking above that there are 3 xl/cuda compiler combos - is that still necessary?

environment: {}
extra_rpaths: []
- compiler:
spec: clang@16.0.6-cuda11.8.0
paths:
cc: /usr/tce/packages/clang/clang-16.0.6-cuda-11.8.0-gcc-11.2.1/bin/clang
cxx: /usr/tce/packages/clang/clang-16.0.6-cuda-11.8.0-gcc-11.2.1/bin/clang++
f77: /usr/tce/packages/gcc/gcc-11.2.1/bin/gfortran
fc: /usr/tce/packages/gcc/gcc-11.2.1/bin/gfortran
flags:
cflags: -g -O2
cxxflags: -g -O2 -std=c++17
fflags: ''
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(minor) you can remove this line entirely if you want.

operating_system: rhel7
target: ppc64le
modules: []
environment: {}
extra_rpaths: []
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ packages:
- spec: cublas@11.8.0
prefix: /usr/tce/packages/cuda/cuda-11.8.0
buildable: false
fftw:
externals:
- spec: fftw@3.3.10
prefix: /usr/tcetmp/packages/fftw/fftw-3.3.10-xl-2023.06.28
buildable: false
lapack:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While this PR disables use of external blas/lapack, I think it would be worth reorganizing it:

  blas:
    buildable: false
  lapack:
    buildable: false
  netlib-lapack:
    externals:
    - spec: netlib-lapack@3.6.0
      prefix: /usr/tcetmp/packages/lapack/lapack-3.11.0-gcc-11.2.1/

(this config worked for me when using external blas/lapack and also avoids any potential issues with listing lapack-xl as an external, which isn't a Spack package).

externals:
- spec: lapack-xl@3.9.0
Expand All @@ -70,4 +75,8 @@ packages:
prefix: /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-xl-2022.08.19-cuda-10.1.243
extra_attributes:
ldflags: "-lmpiprofilesupport -lmpi_ibm_usempi -lmpi_ibm_mpifh -lmpi_ibm"
- spec: spectrum-mpi@2022.08.19-clang16.0.6-cuda-11.8.0
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want a build of a package with clang to use this, then you'd want to make the compiler association explicit using % like spectrum-mpi@2022.08.19%clang16.0.6-cuda-11.8.0

(question, no change required) Do you know if it's strictly required to use/link an MPI compiled w/clang when building dependents with clang?

prefix: /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-clang-16.0.6-cuda-11.8.0-gcc-11.2.1
extra_attributes:
ldflags: "-lmpiprofilesupport -lmpi_ibm_usempi -lmpi_ibm_mpifh -lmpi_ibm"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not aware of Spack being able to make use of extra_attributes in this way (only to do things with environment set/unset/prepend operations etc.). Did you find that you needed it?

buildable: false
10 changes: 9 additions & 1 deletion configs/LLNL-Sierra-IBM-power9-V100-Infiniband/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,15 @@ spack:
spack_spec: spectrum-mpi@2022.08.19
compiler-gcc:
spack_spec: gcc@8.3.1
compiler-clang:
spack_spec: clang@16.0.6-cuda{default_cuda_version}
mpi-clang:
spack_spec: spectrum-mpi@2022.08.19-clang16.0.6-cuda-{default_cuda_version}
blas:
spack_spec: cublas@11.8.0
cublas-cuda:
spack_spec: cublas@{default_cuda_version}
spack_spec: cublas@{default_cuda_version}
lapack:
spack_spec: lapack-xl@3.9.0
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This predates this PR, but FYI if anything ends up needing lapack, this would likely fail because lapack-xl is not a package in Spack.

fftw:
spack_spec: fftw@3.3.10
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ variables:
mpi_command: '/usr/tcetmp/bin/lrun -n {n_ranks} -T {processes_per_node} {gtl_flag}'
batch_submit: 'bsub -q pdebug {execute_experiment}'
batch_nodes: '#BSUB -nnodes {n_nodes}'
batch_ranks: '#BSUB -nnodes {n_nodes}'
batch_ranks: ''
batch_timeout: '#BSUB -W {batch_time}'
default_cuda_version: '11.8.0'
cuda_arch: '70'
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,13 @@ packages:
prefix: /opt/cray/pe/libsci/23.05.1.4/gnu/10.3/x86_64/
lapack:
buildable: false
hypre:
Copy link
Collaborator Author

@pearce8 pearce8 Feb 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove hypre from this list. All variants are already set to amdgpu_target=gfx90a

variants: amdgpu_target=gfx90a
hwloc:
externals:
- spec: hwloc@2.9.1
prefix: /usr
buildable: false
mpi:
buildable: false
cray-mpich:
Expand Down
16 changes: 16 additions & 0 deletions experiments/gromacs/cuda/execute_experiment.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

## Copyright 2023 Lawrence Livermore National Security, LLC and other
## Benchpark Project Developers. See the top-level COPYRIGHT file for details.
##
## SPDX-License-Identifier: Apache-2.0

{batch_nodes}
{batch_ranks}
{batch_timeout}

cd {experiment_run_dir}

{experiment_setup}

{command}
61 changes: 61 additions & 0 deletions experiments/gromacs/cuda/ramble.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright 2023 Lawrence Livermore National Security, LLC and other
# Benchpark Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0

ramble:
config:
deprecated: true
spack_flags:
install: '--add --keep-stage'
concretize: '-U -f'

applications:
gromacs:
workloads:
water_gmx50_adac:
env_vars:
set:
OMP_PROC_BIND: close
OMP_PLACES: threads
OMP_NUM_THREADS: '{omp_num_threads}'
variables:
experiment_setup: ''
n_ranks: '{processes_per_node} * {n_nodes}'
processes_per_node: '2'
n_nodes: '4'
omp_num_threads: '10'
target: 'gpu'
experiments:
gromacs_water_gmx50_adac_size{size}_dlb{dlb}_pin{pin}_target{target}_maxh{maxh}_nsteps{nsteps}_nstlist{nstlist}_npme{npme}:
variables:
dlb: 'no'
pin: 'off'
nb: '{target}'
pme: 'auto'
bonded: 'cpu'
update: '{target}'
maxh: '0.05'
nsteps: '1000'
nstlist: '200'
npme: '1'
size: '1536'

spack:
concretized: true
packages:
gromacs:
spack_spec: gromacs@2023.3 +mpi+openmp+cuda~hwloc~double cuda_arch=={cuda_arch}
compiler: compiler-clang
cuda:
spack_spec: cuda@{default_cuda_version}+allow-unsupported-compilers
compiler: compiler-clang
environments:
gromacs:
packages:
- cuda
- blas
- lapack
- mpi-clang
- fftw
- gromacs
18 changes: 18 additions & 0 deletions experiments/gromacs/openmp/execute_experiment.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

## Copyright 2023 Lawrence Livermore National Security, LLC and other
## Benchpark Project Developers. See the top-level COPYRIGHT file for details.
##
## SPDX-License-Identifier: Apache-2.0

{batch_nodes}
{batch_ranks}
{batch_timeout}

cd {experiment_run_dir}

{spack_setup}

{experiment_setup}

{command}
59 changes: 59 additions & 0 deletions experiments/gromacs/openmp/ramble.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Copyright 2023 Lawrence Livermore National Security, LLC and other
# Benchpark Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0

ramble:
config:
deprecated: true
spack_flags:
install: '--add --keep-stage'
concretize: '-U -f'

applications:
gromacs:
workloads:
water_gmx50_adac:
env_vars:
set:
OMP_PROC_BIND: close
OMP_PLACES: threads
OMP_NUM_THREADS: '{omp_num_threads}'
variables:
experiment_setup: ''
n_ranks: '{processes_per_node} * {n_nodes}'
processes_per_node: '4'
n_nodes: '2'
omp_num_threads: '16'
target: 'cpu'
experiments:
gromacs_water_gmx50_adac_size{size}_dlb{dlb}_pin{pin}_target{target}_maxh{maxh}_nsteps{nsteps}_nstlist{nstlist}_npme{npme}:
variables:
dlb: 'no'
pin: 'off'
nb: '{target}'
pme: 'auto'
bonded: '{target}'
update: '{target}'
maxh: '0.05'
nsteps: '1000'
nstlist: '200'
npme: '0'
size: '1536'

spack:
concretized: true
packages:
fftw:
spack_spec: fftw@3.3.10 +mpi+openmp
compiler: default-compiler
gromacs:
spack_spec: gromacs@main +mpi+openmp~hwloc
compiler: default-compiler
environments:
gromacs:
packages:
- lapack
- default-mpi
- fftw
- gromacs
11 changes: 11 additions & 0 deletions repo/cusolver/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright 2023 Lawrence Livermore National Security, LLC and other
# Benchpark Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0

from spack.package import *


class Cusolver(Package):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does anything use this? Is it still needed?


provides("lapack")
Loading