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