xref: /petsc/config/examples/arch-olcf-summit-opt.py (revision d7b941d8fd04bba92877f3fd4a4c9709ee71348a)
1*d7b941d8SRichard Tran Mills#!/usr/bin/python
2*d7b941d8SRichard Tran Mills
3*d7b941d8SRichard Tran Mills# Example configure script for the IBM POWER9 and NVIDIA Volta GV100 "Summit" system at OLCF/ORNL.
4*d7b941d8SRichard Tran Mills# This may also be useful for the similar Sierra system at LLNL, or other, similar systems that may appear.
5*d7b941d8SRichard Tran Mills# A compiler module and the 'cmake' and 'cuda' modules should be loaded on Summit.
6*d7b941d8SRichard Tran Mills# See inline comments below on other modules that might need to be loaded.
7*d7b941d8SRichard Tran Mills
8*d7b941d8SRichard Tran Millsif __name__ == '__main__':
9*d7b941d8SRichard Tran Mills  import os
10*d7b941d8SRichard Tran Mills  import sys
11*d7b941d8SRichard Tran Mills  sys.path.insert(0, os.path.abspath('config'))
12*d7b941d8SRichard Tran Mills  import configure
13*d7b941d8SRichard Tran Mills  configure_options = [
14*d7b941d8SRichard Tran Mills    # We use the IBM Spectrum MPI compiler wrappers, regardless of the underlying compilers used.
15*d7b941d8SRichard Tran Mills    '--with-cc=mpicc',
16*d7b941d8SRichard Tran Mills    '--with-cxx=mpiCC',
17*d7b941d8SRichard Tran Mills    '--with-fc=mpifort',
18*d7b941d8SRichard Tran Mills    # The IBM XL Fortran compilers are currently not working with PETSc.
19*d7b941d8SRichard Tran Mills    # For XL compilers, can disable Fortran as below:
20*d7b941d8SRichard Tran Mills    #'--with-fc=0',
21*d7b941d8SRichard Tran Mills
22*d7b941d8SRichard Tran Mills    '--with-shared-libraries=1',
23*d7b941d8SRichard Tran Mills
24*d7b941d8SRichard Tran Mills    ############################################################
25*d7b941d8SRichard Tran Mills    # Specify compiler optimization flags.
26*d7b941d8SRichard Tran Mills    ############################################################
27*d7b941d8SRichard Tran Mills
28*d7b941d8SRichard Tran Mills    # The GCC, PGI, and IBM XL compilers are supported on Summit.
29*d7b941d8SRichard Tran Mills    # Make sure that the correct compiler suite module is loaded,
30*d7b941d8SRichard Tran Mills    # and then comment/uncomment the appropriate stanzas below.
31*d7b941d8SRichard Tran Mills    # For optimized cases, more aggressive compilation flags can be tried,
32*d7b941d8SRichard Tran Mills    # but the examples below provide a reasonable start.
33*d7b941d8SRichard Tran Mills
34*d7b941d8SRichard Tran Mills    # If a debug build is desired, use the following for any of the compilers:
35*d7b941d8SRichard Tran Mills    #'--with-debugging=yes',
36*d7b941d8SRichard Tran Mills    #'COPTFLAGS=-g',
37*d7b941d8SRichard Tran Mills    #'CXXOPTFLAGS=-g',
38*d7b941d8SRichard Tran Mills    #'FOPTFLAGS=-g',
39*d7b941d8SRichard Tran Mills
40*d7b941d8SRichard Tran Mills    # For production builds, disable PETSc debugging support:
41*d7b941d8SRichard Tran Mills    '--with-debugging=no',
42*d7b941d8SRichard Tran Mills
43*d7b941d8SRichard Tran Mills    # Optimized flags for PGI:
44*d7b941d8SRichard Tran Mills    'COPTFLAGS=-g -fast',
45*d7b941d8SRichard Tran Mills    'CXXOPTFLAGS=-g -fast',
46*d7b941d8SRichard Tran Mills    'FOPTFLAGS=-g -fast',
47*d7b941d8SRichard Tran Mills
48*d7b941d8SRichard Tran Mills    # Optimized flags for XL or GCC:
49*d7b941d8SRichard Tran Mills    #'--COPTFLAGS=-g -Ofast -mcpu=power9',
50*d7b941d8SRichard Tran Mills    #'--CXXOPTFLAGS=-g -Ofast -mcpu=power9',
51*d7b941d8SRichard Tran Mills    #'--FOPTFLAGS=-g -Ofast -mcpu=power9',
52*d7b941d8SRichard Tran Mills
53*d7b941d8SRichard Tran Mills    ############################################################
54*d7b941d8SRichard Tran Mills    # Specify BLAS and LAPACK.
55*d7b941d8SRichard Tran Mills    ############################################################
56*d7b941d8SRichard Tran Mills
57*d7b941d8SRichard Tran Mills    # With GCC and PGI compilers, can download and build:
58*d7b941d8SRichard Tran Mills    '--download-fblaslapack=1',
59*d7b941d8SRichard Tran Mills
60*d7b941d8SRichard Tran Mills    # Download and build does not work with the XL compilers.
61*d7b941d8SRichard Tran Mills    # For this case, use ESSL. (ESSL does *not* work for builds with GCC and PGI.)
62*d7b941d8SRichard Tran Mills    # Note that ESSL does not provide some of the LAPACK functions required by PETSc!
63*d7b941d8SRichard Tran Mills    # On ORNL's Summit, one must 'module load' both the essl AND netlib-lapack modules:
64*d7b941d8SRichard Tran Mills    #'--with-blaslapack-lib=-L' + os.environ['OLCF_ESSL_ROOT'] + '/lib64 -lessl -llapack',
65*d7b941d8SRichard Tran Mills
66*d7b941d8SRichard Tran Mills    ############################################################
67*d7b941d8SRichard Tran Mills    # Enable GPU support through CUDA/CUSPARSE and ViennaCL.
68*d7b941d8SRichard Tran Mills    ############################################################
69*d7b941d8SRichard Tran Mills
70*d7b941d8SRichard Tran Mills    '--with-cuda=1',
71*d7b941d8SRichard Tran Mills    '--with-cudac=nvcc',
72*d7b941d8SRichard Tran Mills    # nvcc reqires the user to specify host compiler name via "-ccbin" when using non-GCC compilers:
73*d7b941d8SRichard Tran Mills    'CUDAFLAGS=-ccbin pgc++',  # For PGI
74*d7b941d8SRichard Tran Mills    #'CUDAFLAGS=-ccbin xlc++_r',  # For IBM XL
75*d7b941d8SRichard Tran Mills
76*d7b941d8SRichard Tran Mills    '--download-viennacl=1',
77*d7b941d8SRichard Tran Mills
78*d7b941d8SRichard Tran Mills    ############################################################
79*d7b941d8SRichard Tran Mills    # Now specify some commonly used optional packages.
80*d7b941d8SRichard Tran Mills    ############################################################
81*d7b941d8SRichard Tran Mills
82*d7b941d8SRichard Tran Mills    '--with-hdf5-dir=' + os.environ['OLCF_HDF5_ROOT'],  # 'module load hdf5' to use the OLCF-provided build
83*d7b941d8SRichard Tran Mills    '--download-metis=1',
84*d7b941d8SRichard Tran Mills    '--download-parmetis=1',
85*d7b941d8SRichard Tran Mills    '--download-triangle=1',
86*d7b941d8SRichard Tran Mills    '--download-ctetgen=1',
87*d7b941d8SRichard Tran Mills
88*d7b941d8SRichard Tran Mills    # The below options do not work with the IBM XL compilers.
89*d7b941d8SRichard Tran Mills    # Trying to use the OLCF-provided 'hypre' module also does not work.
90*d7b941d8SRichard Tran Mills    '--download-hypre=1',
91*d7b941d8SRichard Tran Mills    '--download-ml=1',
92*d7b941d8SRichard Tran Mills
93*d7b941d8SRichard Tran Mills  ]
94*d7b941d8SRichard Tran Mills  configure.petsc_configure(configure_options)
95