# # -- High Performance Computing Linpack Benchmark (HPL) # HPL - 1.0 - September 27, 2000 # Antoine P. Petitet # University of Tennessee, Knoxville # Innovative Computing Laboratories # (C) Copyright 2000 All Rights Reserved # # -- Copyright notice and Licensing terms: # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions, and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. All advertising materials mentioning features or use of this # software must display the following acknowledgement: # This product includes software developed at the University of # Tennessee, Knoxville, Innovative Computing Laboratories. # # 4. The name of the University, the name of the Laboratory, or the # names of its contributors may not be used to endorse or promote # products derived from this software without specific written # permission. # # -- Disclaimer: # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ###################################################################### # # ---------------------------------------------------------------------- # - shell -------------------------------------------------------------- # ---------------------------------------------------------------------- # SHELL = /bin/sh # CD = cd CP = cp LN_S = ln -s MKDIR = mkdir RM = /bin/rm -f TOUCH = touch # # ---------------------------------------------------------------------- # - Platform identifier ------------------------------------------------ # ---------------------------------------------------------------------- # ARCH = SV1 # # ---------------------------------------------------------------------- # - HPL Directory Structure / HPL library ------------------------------ # ---------------------------------------------------------------------- # #TOPdir = $(HOME)/Benchmark/hpl TOPdir = /usr/home/rlatimer/Benchmark/hpl INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) # HPLlib = $(LIBdir)/libhpl.a # # ---------------------------------------------------------------------- # - Compilers / linkers - Optimization flags --------------------------- # ---------------------------------------------------------------------- # CC = cc NOOPT = #CCFLAGS = -D_INCLUDE_POSIX_SOURCE -DUseTimes -DHPL_USE_CLOCK -Aa +O4 CCFLAGS = -D_INCLUDE_POSIX_SOURCE -DUseTimes -DHPL_USE_CLOCK -O2 -hrestrict=a # # On some platforms, it is necessary to use the Fortran linker to find # the Fortran internals used in the BLAS library. # #LINKER = cc LINKER = f90 #LINKFLAGS = -Aa LINKFLAGS = # ARCHIVER = ar ARFLAGS = r RANLIB = echo # # ---------------------------------------------------------------------- # - MPI directories - library ------------------------------------------ # ---------------------------------------------------------------------- # MPIinc tells the C compiler where to find the MPI header files, MPIlib # is defined to be the name of the MPI library to be used. The variables # MPIdir and MPIplat are only used for defining MPIinc and MPIlib). # #MPIdir = $(HOME)/local/mpi #MPIdir = $(HOME)/opt/ctl/mpt/1.4.0.4 MPIdir = /opt/ctl/mpt/1.4.0.4 #MPIplat = $(MPIdir)/hpux/ch_p4 MPIplat = $(MPIdir) # MPIinc = -I$(MPIdir)/include -I$(MPIplat)/include #MPIlib = $(MPIplat)/lib/libmpich.a MPIlib = $(MPIplat)/lib/libmpi.a # # ---------------------------------------------------------------------- # - F77 / C interface -------------------------------------------------- # ---------------------------------------------------------------------- # You can skip this section if and only if you are not planning to use # a BLAS library featuring a Fortran 77 interface. Otherwise, it is # necessary to fill out the F2CDEFS variable with the appropriate # options. **One and only one** option should be chosen in **each** of # the 3 following categories: # # 1) name space (How C calls a Fortran 77 routine) # # -DAdd_ : all lower case and a suffixed underscore (Suns, # Intel, ...), # -DNoChange : all lower case (IBM RS6000), # -DUpCase : all upper case (Cray), # -Df77IsF2C : the FORTRAN compiler in use is f2c. # # 2) C and Fortran 77 integer mapping # # -DF77_INTEGER=int : Fortran 77 INTEGER is a C int, # -DF77_INTEGER=long : Fortran 77 INTEGER is a C long, # -DF77_INTEGER=short : Fortran 77 INTEGER is a C short. # # 3) Fortran 77 string handling # # -DStringSunStyle : The string address is passed at the string loca- # tion on the stack, and the string length is then # passed as an F77_INTEGER after all explicit # stack arguments, # -DStringStructPtr : The address of a structure is passed by a # Fortran 77 string, and the structure is of the # form: struct {char *cp; F77_INTEGER len;}, # -DStringStructVal : A structure is passed by value for each Fortran # 77 string, and the structure is of the form: # struct {char *cp; F77_INTEGER len;}, # -DCrayStyle : Special option for Cray machines, which uses # Cray fcd (fortran character descriptor) for # interoperation. # #F2CDEFS = -DNoChange -DF77_INTEGER=int -DStringSunStyle F2CDEFS = -DUpCase -DStringSunStyle -DF77_INTEGER=int # # ---------------------------------------------------------------------- # - BLAS library ------------------------------------------------------- # ---------------------------------------------------------------------- # #BLASlib = /usr/lib/pa1.1/libblas.a BLASlib = /opt/ctl/craylibs/craylibs/libsci.a # # ---------------------------------------------------------------------- # - HPL includes / libraries / specifics ------------------------------- # ---------------------------------------------------------------------- # HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(MPIinc) HPL_LIBS = $(HPLlib) $(BLASlib) #HPL_LIBS = $(HPLlib) # # - Compile time options ----------------------------------------------- # # -DHPL_COPY_L force the copy of the panel L before bcast; # -DHPL_CALL_CBLAS call the cblas interface; # -DHPL_DETAILED_TIMING enable detailed timers; # # By default HPL will: # *) not copy L before broadcast, # *) call the BLAS F77 interface, # *) not display detailed timing information. # HPL_OPTS = # # ---------------------------------------------------------------------- # HPL_DEFS = $(HPL_INCLUDES) $(F2CDEFS) $(HPL_OPTS) # # ----------------------------------------------------------------------