# These lines are used under Mac OSX; the syntax is different under Windows # !!!!!!! You also need to use xiar instead of ar # That change needs to be made in at/misc/Makefile and at/tslib/Makefile # Note that the -assume byterecl is important, otherwise the output files have the wrong format
# If you use the -parallel option, the compiler links into a dynamic library for OpenMP # Then you need to make sure that dylib is in the path
# Choose the best architecture (target machine) using the -x switch # According to the latest benchmarks on polyhedron, it looks like -parallel is very helpful
# need -heap-arrays to avoid stack overflows for big runs ... # -no-wrap-margin was added to avoid ascii arrival files being wrapped at 80 characters
# use -march=generic if you get warning messages about instructions that don't make sense # -march=generic assumes an old Intel architecture that the newer versions can all execute (slowly) # -march=native should normally be the best; however, it produced AVX instructions on the Mac that the default assembler could not process # -O2 was the highest level of optimization that worked under Windows
# -static can be used to tell gfortran not to rely on a dynamic link library (the compiler may or may not support) # -static does not seem to work on Macs though, and produces larger executables
# Have had various problems where some installed dynamic link library is incompatible with the one the compiler used and expects at run time # For instance, Matlab changes paths and may point to an incompatible library. # One user found that it was necessary to delete /usr/local/gfortran/lib/libquadmath.dylib to force a static link. See: # http://stackoverflow.com/questions/17590525/correct-way-to-statically-link-in-gfortran-libraries-on-osx # # The -Wa,-q flag can be used to select the Mac CLANG assembler instead of the GNU assembler # At one time that was necessary to get the AVX operations; however, I saw no speed benefit # -march=corei7-avx works on my Mac
# Profiling: # I read that the -pg flag is needed for profiling, but there's some problem with the library and it doesn't compile # It does compile with just the -p and -g flags but does not appear to have enough info for the xcode instruments # export FFLAGS= -p -g -pg -march=native -Wall -std=gnu # export FFLAGS= -p -g -march=native -Bstatic -Wa,-q -Waliasing -Wampersand -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -std=gnu -O3 -ffast-math -funroll-all-loops -fcheck=all
# *** g95 # This is no longer working with the Acoustics Toolbox because it uses Fortran features that the g95 compiler has not implemented # export FC=g95 # export FFLAGS = -Wall -std=f2003 -O3
# *** Portland Group FORTRAN # -Mnoframe caused erroneous results # -Munroll caused erroneous results # These are defaults under -fast, so can't use -fast either
# KRAKEL is commented out below because it requires the LAPACK library. # If you have the LAPACK library installed on your system, first edit the # LAPACK_LIBS variable below to point to your installation, then you can # uncomment the make commands below (uncomment both the "all" and "install" # targets).
export LAPACK_LIBS = -llapack
all: (cd misc; make -k all) (cd tslib; make -k all) (cd Bellhop; make -k all) (cd Kraken; make -k all) (cd KrakenField; make -k all) # (cd Krakel; make -k all) (cd Scooter; make -k all) @echo" " @echo"***********************************" @echo"***** Acoustics Toolbox built *****" @echo"***********************************"
install: (cd misc; make -k all) (cd tslib; make -k all) (cd Bellhop; make -k install) (cd Kraken; make -k install) (cd KrakenField; make -k install) # (cd Krakel; make -k install) (cd Scooter; make -k install) @echo" " @echo"***************************************" @echo"***** Acoustics Toolbox installed *****" @echo"***************************************"
# # To install the Acoustics Toolbox: # # 1) Uncomment the appropriate lines below to select your FORTRAN compiler # (also be sure to comment out all of the lines corresponding to the other compilers).
# 2) If you're using gfortran check the -march switch that selects the chip you're using. # Usually -march=native works
# 3) From a command line shell, run: # % make clean # % make
# on some machines you need to say -mcmodel=medium (or large) to allow for variables larger than 2 gig
# *** Windows *** # If you don't have a FORTRAN compiler, the MinGW ("Minimalist GNU for Windows") compiler suite # is a good choice as it is much easier to install than Cygwin. See http://www.mingw.org/ for details. # Not sure if this is still necessary, but we used to have to change the options -O3 to -O2 below when using gfortran
# *** Linux *** # Most Linux distributions have gfortran already packaged and it can be installed with the respective # package manager (e.g. apt-get, dnf, yum). The packaged versions of the LAPACK library are generally # compatible with Krakel. If you want statically linked executables, "-static" works with gfortran.
# *** Mac *** # The option to create an executable that uses a static library has been a problem. # The gcc community seems to feel that dynamic vs. static libraries is an issue of religious importance. # I prefer static libraries because users have a lot fewer problems installing the code when they don't have # to worry about getting the LD_LIBRARY_PATH set, or the fact that some programs (e.g. Matlab) may reset # that path to an incompatible version. # -static is supposed to work if gfortran has been compiled to enable that option. # However, crt0.o comes up as misssing # -Bstatic worked # You may need to specify an architecture flag under gfortran: # -march=native ( for M2 processor) # -mcpu=ARMv8.6-A ( for generic ARM processor instruction sets) # For further info, see https://oalib-acoustics.org/website_resources/AcousticsToolbox/AT_compile_mac_linux.html # 11/27/2023: # A user reported issues with security on the HPC binary files. Apparently some of the downloaded files were quarantined by the Mac OS # and needed fixing using the xattr command # Also a user noted that Xcor developer tools are not needed. Apparently the Command Line Tools are sufficient. # A user reported that the warning messages produced when running the Makefile were confusing, but that the compiled code worked anyway.
# The make utility tends to get confused with modules because it does not necessarily update the *.mod file # when it compiles the *.f90 file. (The *.mod file contains interface information that doesn't necessarily change # even when the *.f90 file has changed.) # As a result, you may find that make keeps compiling a module, that was already compiled. # A 'make clean' will fix that # ______________________________________________________________________________
# *** ifort # These lines are used under Mac OSX; the syntax is different under Windows # !!!!!!! You also need to use xiar instead of ar # That change needs to be made in at/misc/Makefile and at/tslib/Makefile # Note that the -assume byterecl is important, otherwise the output files have the wrong format
# If you use the -parallel option, the compiler links into a dynamic library for OpenMP # Then you need to make sure that dylib is in the path
# Choose the best architecture (target machine) using the -x switch # According to the latest benchmarks on polyhedron, it looks like -parallel is very helpful
# need -heap-arrays to avoid stack overflows for big runs ... # -no-wrap-margin was added to avoid ascii arrival files being wrapped at 80 characters
# use -march=generic if you get warning messages about instructions that don't make sense # -march=generic assumes an old Intel architecture that the newer versions can all execute (slowly) # -march=native should normally be the best; however, it produced AVX instructions on the Mac that the default assembler could not process # -O2 was the highest level of optimization that worked under Windows
# -static can be used to tell gfortran not to rely on a dynamic link library (the compiler may or may not support) # -static does not seem to work on Macs though, and produces larger executables
# Have had various problems where some installed dynamic link library is incompatible with the one the compiler used and expects at run time # For instance, Matlab changes paths and may point to an incompatible library. # One user found that it was necessary to delete /usr/local/gfortran/lib/libquadmath.dylib to force a static link. See: # http://stackoverflow.com/questions/17590525/correct-way-to-statically-link-in-gfortran-libraries-on-osx # # The -Wa,-q flag can be used to select the Mac CLANG assembler instead of the GNU assembler # At one time that was necessary to get the AVX operations; however, I saw no speed benefit # -march=corei7-avx works on my Mac
# Profiling: # I read that the -pg flag is needed for profiling, but there's some problem with the library and it doesn't compile # It does compile with just the -p and -g flags but does not appear to have enough info for the xcode instruments # export FFLAGS= -p -g -pg -march=native -Wall -std=gnu # export FFLAGS= -p -g -march=native -Bstatic -Wa,-q -Waliasing -Wampersand -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -std=gnu -O3 -ffast-math -funroll-all-loops -fcheck=all
# *** g95 # This is no longer working with the Acoustics Toolbox because it uses Fortran features that the g95 compiler has not implemented # export FC=g95 # export FFLAGS = -Wall -std=f2003 -O3
# *** Portland Group FORTRAN # -Mnoframe caused erroneous results # -Munroll caused erroneous results # These are defaults under -fast, so can't use -fast either
# KRAKEL is commented out below because it requires the LAPACK library. # If you have the LAPACK library installed on your system, first edit the # LAPACK_LIBS variable below to point to your installation, then you can # uncomment the make commands below (uncomment both the "all" and "install" # targets).
export LAPACK_LIBS = -llapack
all: (cd misc; make -k all) (cd tslib; make -k all) (cd Bellhop; make -k all) (cd Kraken; make -k all) (cd KrakenField; make -k all) # (cd Krakel; make -k all) (cd Scooter; make -k all) @echo" " @echo"***********************************" @echo"***** Acoustics Toolbox built *****" @echo"***********************************"
install: (cd misc; make -k all) (cd tslib; make -k all) (cd Bellhop; make -k install) (cd Kraken; make -k install) (cd KrakenField; make -k install) # (cd Krakel; make -k install) (cd Scooter; make -k install) @echo" " @echo"***************************************" @echo"***** Acoustics Toolbox installed *****" @echo"***************************************"