Skip to content

ML-IAP inference performs substantially worse than Symmetrix on ARM64 and CUDA13 #1708

Description

@MicPellegrino

Hi,

We are simulating high-entropy alloys crystals of various size with a fine-tuned version of OMAT (medium) on the Arrhenius system in Sweden. Even after numerous interactions with the support team, we are unable to understand why MACE simulations with LAMMPS+MLIAP are substantially less performant than the ones with LAMMPS+Symmetrix:

------------------------------------------
#atoms | 54	    686    2662   6750   13718
Symmetrix [ns/day]
1 GPU  | 22.9   15.1   5.78   2.56   1.28
2 GPUs | 17.4   15.2   8.45   4.51   2.35
4 GPUs [ 16.5   16.0   12.2   7.18   4.10
8 GPUs | 15.4   15.3   13.1   10.3   6.40
ML-IAP + cuEq [ns/day]
1 GPU  | 3.16   3.12   3.14   2.95   2.38
2 GPUs | 2.60   2.52   2.50   2.30   2.15
4 GPUs | 2.72   2.77   2.68   2.60   2.58
8 GPUs | 2.63   2.65   2.46   2.50   2.41
------------------------------------------

The particularity of the Arrhenius system is that nodes mount GH200 superchips, with NVidia GPUs and CPUs, the latter having a ARM64 architecture. There doesn't seem to be any obvious MPI or I/O chokepoint. This is the timing breakdown for a 8 GPUs job on 2 nodes (13718 atoms) for MLIAP:

Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 66.143     | 67.203     | 69.341     |  14.4 | 93.66
Neigh   | 0.0088742  | 0.0093421  | 0.010292   |   0.5 |  0.01
Comm    | 2.1662     | 4.2939     | 5.3503     |  56.7 |  5.98
Output  | 0.001877   | 0.0024008  | 0.0027991  |   0.6 |  0.00
Modify  | 0.16845    | 0.17819    | 0.18421    |   1.3 |  0.25
Other   |            | 0.06382    |            |       |  0.09

And this is the Symmetrix counterpart:

Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 25.533     | 25.615     | 25.68      |   0.9 | 94.85
Neigh   | 0.0076401  | 0.0080515  | 0.0083644  |   0.2 |  0.03
Comm    | 1.081      | 1.1425     | 1.2162     |   3.8 |  4.23
Output  | 0.0021162  | 0.0030452  | 0.0050268  |   2.2 |  0.01
Modify  | 0.1571     | 0.17325    | 0.18442    |   2.5 |  0.64
Other   |            | 0.06507    |            |       |  0.24

Mind that we are using the same model, with single-precision weigths, and we are also using cuEquivariance when simulating with MLIAP.

Is it very odd that MLIAP shows almost no strong or weak scaling (no. atoms or no. GPUs).

We also noticed a ton of KOKKOS warnings, to the point that I would not even know where to start listing them, and this issue post would become pages long. I am not sure if that's a hint, but we see warning both when building MLAIP and Symmetrix. So I doubt it's the culprit.

EDIT - I think I forgot to state why this is an issue. At the current state, Symmetrix only supports models with l_max=3 and does not support per-atom virials. In our project, we plan to use an ensemble of models with l_max=2, and plan to explore thermo-mechanical properies of the alloys (hence the virials).

All the details for reproducing the builds are below.

CMake options for ML-IAP:

cmake \
    -C kokkos-cuda-nowrapper_arrhenius.cmake \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_INSTALL_PREFIX=$BUILD_DIR \
    -D BUILD_MPI=ON \
    -D BUILD_OMP=ON \
    -D BUILD_SHARED_LIBS=ON \
    -D PKG_KOKKOS=ON \
    -D Kokkos_ARCH_NATIVE=ON \
    -D Kokkos_ARCH_HOPPER90=ON \
    -D Kokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
    -D Kokkos_ENABLE_SERIAL=ON \
    -D Kokkos_ENABLE_OPENMP=ON \
    -D Kokkos_ENABLE_NEIGH_HALF=ON \
    -D Kokkos_ENABLE_CUDA=ON \
    -D PKG_ML-IAP=ON \
    -D PKG_ML-MACE=ON \
    -D PKG_ML-SNAP=ON \
    -D MLIAP_ENABLE_PYTHON=ON \
    -D PKG_PYTHON=ON \
    -D PKG_OPENMP=ON \
    -D PKG_OPT=ON \
    -D PKG_KSPACE=ON \
    -D PKG_MANYBODY=ON \
    -D PKG_MOLECULE=ON \
    -D PKG_RIGID=ON \
    -D PKG_MC=ON \
    -D PKG_MISC=ON \
    -D PKG_MEAM=ON \
    -D PKG_EXTRA-COMPUTE=ON \
    -D PKG_EXTRA-DUMP=ON \
    -D PKG_EXTRA-FIX=ON \
    -D PKG_EXTRA-MOLECULE=ON \
    -D PKG_EXTRA-PAIR=ON \
    ../cmake

CMake options for Symmetrix:

cmake \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_CXX_STANDARD=20 \
    -D CMAKE_CXX_STANDARD_REQUIRED=ON \
    -D CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -march=native -ffast-math" \
    -D BUILD_SHARED_LIBS=ON \
    -D PKG_KOKKOS=ON \
    -D BUILD_OMP=ON \
    -D BUILD_MPI=ON \
    -D PKG_FEP=ON \
    -D PKG_MOLECULE=ON \
    -D PKG_MANYBODY=ON \
    -D PKG_KSPACE=ON \
    -D PKG_RIGID=ON \
    -D PKG_REAXFF=ON \
    -D PKG_MISC=ON \
    -D PKG_ASPHERE=ON \
    -D PKG_CLASS2=ON \
    -D PKG_MC=ON \
    -D PKG_MEAM=ON \
    -D PKG_EXTRA-COMPUTE=ON \
    -D PKG_EXTRA-DUMP=ON \
    -D PKG_EXTRA-FIX=ON \
    -D BUILD_SHARED_LIBS=ON \
    -D SYMMETRIX_KOKKOS=ON \
    -D SYMMETRIX_SPHERICART_CUDA=ON \
    -D Kokkos_ARCH_NATIVE=ON \
    -D Kokkos_ARCH_HOPPER90=ON \
    -D Kokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON \
    -D Kokkos_ENABLE_SERIAL=ON \
    -D Kokkos_ENABLE_OPENMP=ON \
    -D Kokkos_ENABLE_NEIGH_HALF=ON \
    -D Kokkos_ENABLE_CUDA=ON \
    -D CMAKE_INSTALL_PREFIX=$BUILD_DIR \
    ../cmake

Compilers:

GCC 14.3.0
MPICH 4.3.2
CUDA 13.0.3

Library versions (for MLIAP):

Package                       Version
----------------------------- -----------
ase                           3.29.0
ConfigArgParse                1.7.5
contourpy                     1.3.3
cuda-pathfinder               1.5.6
cuequivariance                0.9.1
cuequivariance-ops-cu13       0.9.1
cuequivariance-ops-torch-cu13 0.9.1
cuequivariance-torch          0.9.1
cupy-cuda13x                  14.1.1
cycler                        0.12.1
Cython                        3.2.0
e3nn                          0.4.4
filelock                      3.29.0
fonttools                     4.63.0
fsspec                        2026.4.0
gitdb                         4.0.12
GitPython                     3.1.53
h5py                          3.16.0
Jinja2                        3.1.6
kiwisolver                    1.5.0
lammps                        2026.2.11
lightning-utilities           0.15.3
lmdb                          2.3.0
mace-torch                    0.3.16
MarkupSafe                    3.0.3
matplotlib                    3.11.1
matscipy                      1.2.0
mpmath                        1.3.0
networkx                      3.6.1
numpy                         2.1.0
nvidia-cublas                 13.0.0.19
nvidia-cuda-cupti             13.0.48
nvidia-cuda-nvrtc             13.0.48
nvidia-cuda-runtime           13.0.48
nvidia-cudnn-cu13             9.13.0.50
nvidia-cufft                  12.0.0.15
nvidia-cufile                 1.15.0.42
nvidia-curand                 10.4.0.35
nvidia-cusolver               12.0.3.29
nvidia-cusparse               12.6.2.49
nvidia-cusparselt-cu13        0.8.0
nvidia-ml-py                  13.610.43
nvidia-nccl-cu13              2.27.7
nvidia-nvjitlink              13.0.39
nvidia-nvshmem-cu13           3.3.24
nvidia-nvtx                   13.0.39
opt_einsum                    3.4.0
opt-einsum-fx                 0.1.4
orjson                        3.11.9
packaging                     26.2
pandas                        3.0.3
pillow                        12.2.0
pip                           25.1.1
platformdirs                  4.11.0
prettytable                   3.18.0
pyparsing                     3.3.2
python-dateutil               2.9.0.post0
python_hostlist               2.3.0
PyYAML                        6.0.3
scipy                         1.18.0
setuptools                    78.1.0
six                           1.17.0
smmap                         5.0.3
sympy                         1.14.0
torch                         2.9.0+cu130
torch-ema                     0.3
torchaudio                    2.9.0
torchmetrics                  1.9.0
torchvision                   0.24.0
tqdm                          4.69.0
triton                        3.5.0
typing_extensions             4.15.0
wcwidth                       0.8.2

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions