Skip to content

Commit

Permalink
Always add -fPIC flag for nvfortran.
Browse files Browse the repository at this point in the history
  • Loading branch information
lrknox committed Oct 6, 2023
1 parent 4261552 commit 8161c3a
Show file tree
Hide file tree
Showing 4 changed files with 383 additions and 0 deletions.
21 changes: 21 additions & 0 deletions config/linux-gnulibc1
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ fi
# Figure out GNU C compiler flags
. $srcdir/config/gnu-flags

# Figure out NVIDIA C Compiler flags
. $srcdir/config/nvidia-flags

# Figure out PGI C compiler flags
. $srcdir/config/pgi-flags

Expand Down Expand Up @@ -113,6 +116,9 @@ fi
# Figure out GNU FC compiler flags
. $srcdir/config/gnu-fflags

# Figure out NVIDIA FC compiler flags
. $srcdir/config/nvidia-fflags

# Figure out PGI FC compiler flags
. $srcdir/config/pgi-fflags

Expand Down Expand Up @@ -205,6 +211,9 @@ fi
# Figure out GNU CXX compiler flags
. $srcdir/config/gnu-cxxflags

# Figure out NVIDIA CXX compiler flags
. $srcdir/config/nvidia-cxxflags

# Figure out PGI CXX compiler flags
. $srcdir/config/pgi-cxxflags

Expand Down Expand Up @@ -245,6 +254,10 @@ case $CC in
grep 'clang version' | sed 's/.*clang version \([-a-z0-9\.]*\).*/\1/'`"
;;

*nvc*)
cc_version_info=`$CC $CFLAGS $H5_CFLAGS -V 2>&1 | grep 'nvc'`
;;

*)
echo "No match to get cc_version_info for $CC"
;;
Expand Down Expand Up @@ -296,6 +309,7 @@ case $FC in
*pgf90*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'pgf90'`
;;

*nagfor*|*nagftn*)
RM='rm -f'
tmpfile=/tmp/cmpver.$$
Expand All @@ -310,6 +324,10 @@ case $FC in
echo "compiler '$FC' is $fc_version_info"
;;

*nvfortran*)
fc_version_info=`$FC $FCFLAGS $H5_FCFLAGS -V 2>&1 | grep 'nvfortran'`
;;

*)
echo "No match to get fc_version_info for $FC"
;;
Expand All @@ -320,6 +338,9 @@ fi
# check if the compiler_version_info is already set
if test -z "$cxx_version_info"; then
case $CXX in
*nvc++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'nvc++'`
;;
*pgc++*)
cxx_version_info=`$CXX $CXXFLAGS $H5_CXXFLAGS -V 2>&1 | grep 'pgc++'`
;;
Expand Down
101 changes: 101 additions & 0 deletions config/nvidia-cxxflags
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].


# This file should be sourced into configure if the compiler is the
# NVIDIA nvc++ compiler or a derivative. It is careful not to do anything
# if the compiler is not NVIDIA; otherwise `cxx_flags_set' is set to `yes'
#

# Get the compiler version in a way that works for NVIDIA nvc++
# unless a compiler version is already known
#
# cxx_vendor: The compiler name: nvc++
# cxx_version: Version number: 5.0-2, 5.2-2
#
if test X = "X$cxx_flags_set"; then
cxx_version="`$CXX $CXXFLAGS -V 2>&1 |grep '^nvc++ '`"
if test X != "X$cxx_version"; then
cxx_vendor=`echo $cxx_version |sed 's/\([a-z]*++\).*/\1/'`
cxx_version=`echo $cxx_version |sed 's/nvc++ \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$CXX' is NVIDIA $cxx_vendor-$cxx_version"

# Some version numbers
# NVIDIA version numbers are of the form: "major.minor-patch"
cxx_vers_major=`echo $cxx_version | cut -f1 -d.`
cxx_vers_minor=`echo $cxx_version | cut -f2 -d. | cut -f1 -d-`
cxx_vers_patch=`echo $cxx_version | cut -f2 -d. | cut -f2 -d-`
test -n "$cxx_vers_major" || cxx_vers_major=0
test -n "$cxx_vers_minor" || cxx_vers_minor=0
test -n "$cxx_vers_patch" || cxx_vers_patch=0
cxx_vers_all=`expr $cxx_vers_major '*' 1000000 + $cxx_vers_minor '*' 1000 + $cxx_vers_patch`
fi
fi

# Common PGI flags for various situations
if test "X-nvc++" = "X-$cxx_vendor"; then

###########
# General #
###########

# Default to C++11 standard
H5_CXXFLAGS="$H5_CXXFLAGS -std=c++11 -Minform=warn"

##############
# Production #
##############

PROD_CXXFLAGS=

#########
# Debug #
#########

# NDEBUG is handled explicitly in configure
# -g is handled by the symbols flags
DEBUG_CXXFLAGS="-Mbounds"

###########
# Symbols #
###########

NO_SYMBOLS_CXXFLAGS="-s"
SYMBOLS_CXXFLAGS="-g"

#############
# Profiling #
#############

PROFILE_CXXFLAGS="-Mprof=func,line"
# Use this for profiling with gprof
#PROFILE_CXXFLAGS="-pg"

################
# Optimization #
################

HIGH_OPT_CXXFLAGS="-O4"
DEBUG_OPT_CXXFLAGS="-gopt -O2"
NO_OPT_CXXFLAGS="-O0"

#################
# Flags are set #
#################
cxx_flags_set=yes
fi

# Clear cxx info if no flags set
if test "X-$cxx_flags_set" = "X-"; then
cxx_vendor=
cxx_version=
fi
139 changes: 139 additions & 0 deletions config/nvidia-fflags
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# -*- shell-script -*-
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].


# This file should be sourced into configure if the compiler is the
# NVIDIA nvfortran compiler or a derivative. It is careful not to do anything
# if the compiler is not NVIDIA; otherwise `f9x_flags_set' is set to `yes'
#

# Get the compiler version in a way that works for NVIDIA nvfortran
# unless a compiler version is already known
#
# f9x_vendor: The compiler name: nvfortran
# f9x_version: Version number:
#
if test X = "X$f9x_flags_set"; then
f9x_version="`$FC $FCFLAGS -V 2>&1 |grep '^nvfortran '`"
if test X != "X$f9x_version"; then
is_mpi="`$FC $FCFLAGS -help 2>&1 |grep 'link MPI'`"
f9x_vendor=`echo $f9x_version |sed 's/\([a-z0-9]*\).*/\1/'`
f9x_version=`echo $f9x_version |sed 's/nvfortran \([-a-z0-9\.\-]*\).*/\1/'`
echo "compiler '$FC' is NVIDIA $f9x_vendor-$f9x_version"

# Some version numbers
# NVIDIA version numbers are of the form: "major.minor-patch"
f9x_vers_major=`echo $f9x_version | cut -f1 -d.`
f9x_vers_minor=`echo $f9x_version | cut -f2 -d. | cut -f1 -d-`
f9x_vers_patch=`echo $f9x_version | cut -f2 -d. | cut -f2 -d-`
test -n "$f9x_vers_major" || f9x_vers_major=0
test -n "$f9x_vers_minor" || f9x_vers_minor=0
test -n "$f9x_vers_patch" || f9x_vers_patch=0
f9x_vers_all=`expr $f9x_vers_major '*' 1000000 + $f9x_vers_minor '*' 1000 + $f9x_vers_patch`
fi
fi

# Common NVIDIA flags for various situations
if test "X-nvfortran" = "X-$f9x_vendor"; then

###############################
# Architecture-specific flags #
###############################

arch=
# Nothing currently. (Uncomment code below and modify to add any)
#case "$host_os-$host_cpu" in
# *-i686)
# arch="-march=i686"
# ;;
#esac

# Host-specific flags
# Nothing currently. (Uncomment code below and modify to add any)
#case "`hostname`" in
# sleipnir.ncsa.uiuc.edu)
# arch="$arch -pipe"
# ;;
#esac

##############
# Production #
##############

# Check for MPI wrapper being used and tweak down compiler options
# Comment out the Tweaking since it caused problems to mpich1.2.6.
# Need to investigate the reasons to tweak.
#if test "X-" == "X-$is_mpi"; then
# PROD_FCFLAGS="-fast -s -Mnoframe"
#else
# PROD_FCFLAGS="-O2 -s"
#fi
PROD_FCFLAGS="-fast -Mnoframe -fPIC"

#########
# Debug #
#########

DEBUG_FCFLAGS="-Mbounds -Mchkptr -Mdclchk -fPIC"

###########
# Symbols #
###########

NO_SYMBOLS_FCFLAGS="-s"
SYMBOLS_FCFLAGS="-g"

#############
# Profiling #
#############

PROFILE_FCFLAGS="-Mprof=func,line"
# Use this for profiling with gprof
#PROFILE_FCFLAGS="-pg"

################
# Optimization #
################

HIGH_OPT_FCFLAGS=
DEBUG_OPT_FCFLAGS=
NO_OPT_FCFLAGS=

############
# Warnings #
############

###########
# General #
###########

FC_BASENAME=nvfortran
Fortran_COMPILER_ID=NVIDIA
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
# Uncomment the following to add something specific for FCFLAGS.
#FCFLAGS="$FCFLAGS"



#################
# Flags are set #
#################
f9x_flags_set=yes
fi

# Clear f9x info if no flags set
if test "X-$f9x_flags_set" = "X-"; then
f9x_vendor=
f9x_version=
fi

Loading

0 comments on commit 8161c3a

Please sign in to comment.