xref: /petsc/config/examples/arch-olcf-crusher.py (revision 27c9ef7be839ca1f58a90cb820253679fac370b3)
1869551cdSJunchao Zhang#!/usr/bin/python3
2869551cdSJunchao Zhang
3869551cdSJunchao Zhang#  Modules loaded by default (on login to Crusher):
4869551cdSJunchao Zhang#
56f5d4113SSatish Balay# 1) craype-x86-trento                       9) craype/2.7.15
66f5d4113SSatish Balay# 2) libfabric/1.15.0.0                     10) cray-dsmml/0.2.2
76f5d4113SSatish Balay# 3) craype-network-ofi                     11) cray-mpich/8.1.16
86f5d4113SSatish Balay# 4) perftools-base/22.05.0                 12) cray-libsci/21.08.1.2
96f5d4113SSatish Balay# 5) xpmem/2.3.2-2.2_7.8__g93dd7ee.shasta   13) PrgEnv-cray/8.3.3
106f5d4113SSatish Balay# 6) cray-pmi/6.1.2                         14) xalt/1.3.0
116f5d4113SSatish Balay# 7) cray-pmi-lib/6.0.17                    15) DefApps/default
126f5d4113SSatish Balay# 8) cce/14.0.0
1357411e1fSSatish Balay#
1457411e1fSSatish Balay# Need to load additional rocm module to build with hip
1557411e1fSSatish Balay#
166f5d4113SSatish Balay# module load rocm/5.1.0
17869551cdSJunchao Zhang#
18869551cdSJunchao Zhang# We use Cray Programming Environment, Cray compilers, Cray-mpich.
19869551cdSJunchao Zhang# To enable GPU-aware MPI, one has to also set this runtime environment variable
20869551cdSJunchao Zhang#
21869551cdSJunchao Zhang# export MPICH_GPU_SUPPORT_ENABLED=1
22869551cdSJunchao Zhang#
236f5d4113SSatish Balay# Additional note: "craype-accel-amd-gfx90a" module is recommended for
246f5d4113SSatish Balay# "OpenMP offload" or "GPU enabled MPI". It requires "--with-openmp" option.
256f5d4113SSatish Balay# [otherwise building c examples gives link errors (when fortran bindings are enabled)]
266f5d4113SSatish Balay# Alternative is to use "-lmpi_gtl_hsa" as used below.
276f5d4113SSatish Balay#
286f5d4113SSatish Balay# ld.lld: error: /autofs/nccs-svm1_home1/balay/petsc/arch-olcf-crusher/lib/libpetsc.so: undefined reference to .omp_offloading.img_start.cray_amdgcn-amd-amdhsa [--no-allow-shlib-undefined]
29869551cdSJunchao Zhang#
30869551cdSJunchao Zhang
31869551cdSJunchao Zhangif __name__ == '__main__':
32869551cdSJunchao Zhang  import sys
33869551cdSJunchao Zhang  import os
34869551cdSJunchao Zhang  sys.path.insert(0, os.path.abspath('config'))
35869551cdSJunchao Zhang  import configure
36869551cdSJunchao Zhang  configure_options = [
37869551cdSJunchao Zhang    '--with-cc=cc',
38869551cdSJunchao Zhang    '--with-cxx=CC',
39869551cdSJunchao Zhang    '--with-fc=ftn',
40869551cdSJunchao Zhang    'LIBS=-L{x}/gtl/lib -lmpi_gtl_hsa'.format(x=os.environ['CRAY_MPICH_ROOTDIR']),
41*b940b04dSSatish Balay    #'--with-openmp=1', # enable if using "craype-accel-amd-gfx90a" module
42869551cdSJunchao Zhang    '--with-debugging=0',
43869551cdSJunchao Zhang    '--with-mpiexec=srun -p batch -N 1 -A csc314_crusher -t 00:10:00',
44869551cdSJunchao Zhang    '--with-hip',
45869551cdSJunchao Zhang    '--with-hipc=hipcc',
46869551cdSJunchao Zhang    '--download-kokkos',
47869551cdSJunchao Zhang    '--download-kokkos-kernels',
48869551cdSJunchao Zhang  ]
49869551cdSJunchao Zhang  configure.petsc_configure(configure_options)
50