Support for arm architecture

I’m interested in using psi4 on the UK HPC archer, which is an arm architecture.
I wonder if I can compile psi4 on arm64 or I will be wasting my time? Thank you.

Good question!

I successfully build psi4 on the apple arm architecture, but the Archer one is of course a bit different (Marvell ThunderX2 Arm64).

Provided that there are Lapack/Blas and python/numpy readily available a from-scratch-build should be possible.

Is there an overview of what software is available on Archer?

I have just pulled down all the module in archer2.
--------------------------------------------------------------------------------------------------------------------------------------------------------------- /work/y07/shared/archer2-lmod/python/core ----------------------------------------------------------------------------------------------------------------------------------------------------------------
matplotlib/3.4.3 netcdf4/1.5.7 seaborn/0.11.2

---------------------------------------------------------------------------------------------------------------------------------------------------------------- /work/y07/shared/archer2-lmod/libs/core -----------------------------------------------------------------------------------------------------------------------------------------------------------------
adios/1.13.1 boost/1.72.0 epcc-cray-hdf5-parallel/1.12.0.3 (D) epcc-cray-netcdf-hdf5parallel/4.7.4.3 (D) glm/0.9.9.6 gsl/2.7 matio/1.5.18 mkl/19.5-281 mumps/5.3.5 petsc/3.14.2 slepc/3.14.1 superlu/5.2.2
arpack-ng/3.8.0 eigen/3.4.0 epcc-cray-hdf5-parallel/1.12.0.7 epcc-cray-netcdf-hdf5parallel/4.7.4.7 gmp/6.2.1 hypre/2.18.0 metis/5.1.0 mkl/21.2-2883 (D) parmetis/4.0.3 scotch/6.1.0 superlu-dist/6.4.0 trilinos/12.18.1

---------------------------------------------------------------------------------------------------------------------------------------------------------------- /work/y07/shared/archer2-lmod/apps/core -----------------------------------------------------------------------------------------------------------------------------------------------------------------
castep/20.11 code_saturne/7.0.1-gcc11 (D) cp2k/cp2k-8.2 (D) gromacs/2021.3+plumed lammps/29_Sep_2021 namd/2.14 (D) nwchem/7.0.2 openfoam/com/v2106 openfoam/org/v9.20210903 (D) vasp/5/5.4.4.pl2-vtst vasp/6/6.2.1
code_saturne/7.0.1-cce12 cp2k/cp2k-8.1 elk/elk-7.2.42 gromacs/2021.3 (D) namd/2.14-nosmp nektar/5.0.3 onetep/6.1.3.7 openfoam/org/v8.20200901 quantum_espresso/6.8 vasp/5/5.4.4.pl2 (D)

---------------------------------------------------------------------------------------------------------------------------------------------------------------- /work/y07/shared/archer2-lmod/utils/core ----------------------------------------------------------------------------------------------------------------------------------------------------------------
bolt/0.7 (L) cdo/1.9.9rc1 cmake/3.21.3 epcc-reframe/0.2 epcc-setup-env (L) genmaskcpu/1.0 gnuplot/5.4.2 ncl/6.6.2 other-software/1.0 reframe/3.8.2 usage-analysis/1.1 visidata/2.1 vmd/1.9.3-gcc10 xthi/1.2

------------------------------------------------------------------------------------------------------------------------------------------------ /opt/cray/pe/lmod/modulefiles/mpi/crayclang/10.0/ofi/1.0/cray-mpich/8.0 -------------------------------------------------------------------------------------------------------------------------------------------------
cray-hdf5-parallel/1.12.0.3 (D) cray-hdf5-parallel/1.12.0.7 cray-parallel-netcdf/1.12.1.3 (D) cray-parallel-netcdf/1.12.1.7

------------------------------------------------------------------------------------------------------------------------------------------------------------ /opt/cray/pe/lmod/modulefiles/perftools/21.02.0 -------------------------------------------------------------------------------------------------------------------------------------------------------------
perftools perftools-lite perftools-lite-events perftools-lite-gpu perftools-lite-hbm perftools-lite-loops perftools-preload

------------------------------------------------------------------------------------------------------------------------------------------------------ /opt/cray/pe/lmod/modulefiles/comnet/crayclang/10.0/ofi/1.0 -------------------------------------------------------------------------------------------------------------------------------------------------------
cray-mpich-abi/8.1.4 (D) cray-mpich-abi/8.1.9 cray-mpich/8.1.4 (L,D) cray-mpich/8.1.9

--------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/pe/lmod/modulefiles/net/ofi/1.0 ----------------------------------------------------------------------------------------------------------------------------------------------------------------
cray-openshmemx/11.2.0 (D) cray-openshmemx/11.3.3

------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/pe/lmod/modulefiles/cpu/x86-rome/1.0 -------------------------------------------------------------------------------------------------------------------------------------------------------------
cray-fftw/3.3.8.9 (D) cray-fftw/3.3.8.11

--------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/pe/lmod/modulefiles/compiler/crayclang/10.0 ----------------------------------------------------------------------------------------------------------------------------------------------------------
cray-hdf5/1.12.0.3 (D) cray-hdf5/1.12.0.7

----------------------------------------------------------------------------------------------------------------------------------------------------------------- /usr/share/lmod/lmod/modulefiles/Core ------------------------------------------------------------------------------------------------------------------------------------------------------------------
lmod settarg

------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/pe/lmod/modulefiles/core -------------------------------------------------------------------------------------------------------------------------------------------------------------------
PrgEnv-aocc/8.0.0 (D) PrgEnv-gnu/8.0.0 (D) aocc/3.0.0 cce/12.0.3 cray-R/4.0.3.0 (D) cray-cti/2.13.6 (D) cray-jemalloc/5.1.0.4 cray-pals/1.0.17 cray-pmi/6.0.13 cray-stat/4.11.5 craypkg-gen/1.3.18 gcc/11.2.0 papi/6.0.0.6 (D) valgrind4hpc/2.11.1 (D)
PrgEnv-aocc/8.1.0 PrgEnv-gnu/8.1.0 atp/3.13.1 (D) cpe-cuda/21.09 cray-R/4.1.1.0 cray-cti/2.15.5 cray-libpals/1.0.17 cray-pmi-lib/6.0.10 (D) cray-python/3.8.5.0 (D) craype/2.7.6 (L,D) gcc/9.3.0 gdb4hpc/4.12.5 (D) papi/6.0.0.9 valgrind4hpc/2.12.4
PrgEnv-cray/8.0.0 (L,D) aocc/2.2.0 atp/3.14.5 cpe/21.04 (D) cray-ccdb/4.11.1 (D) cray-dsmml/0.1.4 (D) cray-libsci/21.04.1.1 (L,D) cray-pmi-lib/6.0.13 cray-python/3.9.4.1 craype/2.7.10 gcc/10.2.0 (D) gdb4hpc/4.13.5 perftools-base/21.02.0 (L,D)
PrgEnv-cray/8.1.0 aocc/2.2.0.1 (D) cce/11.0.4 (L,D) cpe/21.09 cray-ccdb/4.12.4 cray-dsmml/0.2.1 cray-libsci/21.08.1.2 cray-pmi/6.0.10 (D) cray-stat/4.10.1 (D) craypkg-gen/1.3.14 (D) gcc/10.3.0 iobuf/2.0.10 perftools-base/21.09.0

---------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/pe/lmod/modulefiles/craype-targets/default ----------------------------------------------------------------------------------------------------------------------------------------------------------
craype-accel-amd-gfx908 craype-accel-host craype-accel-nvidia80 craype-hugepages16M craype-hugepages256M craype-hugepages2M craype-hugepages4M craype-hugepages64M craype-network-none craype-network-ucx craype-x86-rome (L)
craype-accel-amd-gfx90a craype-accel-nvidia70 craype-hugepages128M craype-hugepages1G craype-hugepages2G craype-hugepages32M craype-hugepages512M craype-hugepages8M craype-network-ofi (L) craype-x86-milan craype-x86-trento

---------------------------------------------------------------------------------------------------------------------------------------------------------------------- /usr/local/share/modulefiles ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
load-epcc-module (L)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/cray/modulefiles --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cray-lustre-client/2.12.4.2_cray_63_g79cd827-7.0.1.0_8.1__g79cd827237.shasta cray-shasta-mlnx-firmware/1.0.8 dvs/2.12_4.0.112-7.0.1.0_15.1__ga97f35d9 libfabric/1.11.0.4.71 (L) xpmem/2.2.40-7.0.1.0_2.7__g1d7a24d.shasta (L)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/modulefiles ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
aocc/2.2.0 aocc/2.2.0.1 aocc/3.0.0 cray-R/4.0.3.0 gcc/8.1.0 gcc/9.3.0 gcc/10.2.0

Do you have any experience with compiling software and cmake ?

As none of our devs have experience with this system it is hard to give clear instructions.

I have experience with compiling Gromacs or cp2k and I will give a try. I’m just wondering if it is possible so it won’t be the case that I’m trying to compile on an unsupported platform.

No fundamental blocker to my knowledge.

The main issue is that ideally the blas and threading library of numpy should be the same as for psi4, which can be hard to guarantee. But it’s not necessarily a deal breaker.

https://psicode.org/psi4manual/master/build_planning.html#

Maybe miniconda is available for this arm64 architecture (aarch64)? Having a virtual python is advisable.

Feel free to visit our slack channel once you actually start to try this. Forum communication can be slow.