[Beowulf] Help with HPL Makefile

snj78 at comcast.net snj78 at comcast.net
Sun Apr 8 20:36:27 PDT 2007


Hello all,

I am trying to configure HPL on a beowulf cluster that I have put together for a senior project at Weber State University, and I am having a little bit of trouble.  First of all, about the cluster:

4-node diskless cluster
Fedora Core 6 - 64 bit version
Intel Pentium D dual core processors
MSI 965 motherboards

Right now I have one node doing a net boot with syslinux and would like to do a benchmark before I put the rest of the nodes together, so I can have a performance comparison with subsequent nodes.  I have installed the following packages on my system for HPL:

openmpi-1.1-7.fc6.x86_64.rpm
openmpi-devel-1.1-7.fc6.x86_64.rpm
openmpi-libs-1.1-7.fc6.x86_64.rpm
lapack-3.1.0-4.fc6.x86_64.rpm
Blas-3.1.0-4.fc6.x86_64.rpm
atlas-4.6.0-11.fc6.x86_64.rpm
cblas.tgz
hpl.tgz

I may have installed more packages than necessary but I didn't think it would hurt.  Everything has installed successfully but I can't get the makefile.<arch> down.  I simply just don't understand enough of it to build it correctly.  I just keep getting 'Make.inc' errors.  The Makefile that I have attempted is below, called Make.Beowulf.  I just used a generic makefile from the setups directory and attempted to supply some paths to the libraries but to no avail.  I have tried to find documentation explaining more clearly how everything should be setup but nothing in lay-man terms, hence the errors.  A few questions:

What should my arch be?  Does that even matter?  Does it have to be x86_64?
I realize I have to supply paths to the BLAS and MPI headers and libraries but exactly which libraries and header files?
The compiler I am using is mpicc which is just linked to gcc, but shouldn't that compiler supply the links to the correct libraries and header files?
The MPlib parameter points to libmpich.a so I installed mpich2 but that didn't give me a libmpich.a directory so what should I use there?
Also, I am not using an network file systems so am I correct in assuming that all of the libraries need to be on each of the nodes?  If so, I need to know exactly where to put them, and again, I believe they would need to be put into the exact same location, so the problem is, which libraries and header files exactly?  (as to save precious RAM on each of the nodes).

I realize I may be asking a lot but the end of the semester is just around the corner.  I appreciate any help that you may give me ahead of time.  Thanks.

Stephen Jenkins
snj78 at comcast.net


Make.Beowulf

SHELL = /bin/sh
#
CD = cd
CP = cp
LN_S = ln -s
MKDIR = mkdir
RM = /bin/rm -f
TOUCH = touch
#
# ----------------------------------------------------------------------
# - Platform identifier ------------------------------------------------
# ----------------------------------------------------------------------
#
ARCH = Linux_x86_64
#
# ----------------------------------------------------------------------
# - HPL Directory Structure / HPL library ------------------------------
# ----------------------------------------------------------------------
#
TOPdir = $(HOME)/hpl
INCdir = $(TOPdir)/include
BINdir = $(TOPdir)/bin/$(ARCH)
LIBdir = $(TOPdir)/lib/$(ARCH)
#
HPLlib = $(LIBdir)/libhpl.a 
#
# ----------------------------------------------------------------------
# - Message Passing library (MPI) --------------------------------------
# ----------------------------------------------------------------------
# MPinc tells the C compiler where to find the Message Passing library
# header files, MPlib is defined to be the name of the library to be
# used. The variable MPdir is only used for defining MPinc and MPlib.
#
MPdir = /usr/include/openmpi
MPinc = -I$/usr/include/include
MPlib = $(MPdir)/lib/libmpich.a
#
# ----------------------------------------------------------------------
# - Linear Algebra library (BLAS or VSIPL) -----------------------------
# ----------------------------------------------------------------------
# LAinc tells the C compiler where to find the Linear Algebra library
# header files, LAlib is defined to be the name of the library to be
# used. The variable LAdir is only used for defining LAinc and LAlib.
#
LAdir = $(HOME)/netlib/ARCHIVES/Linux_PII
LAinc =
LAlib = $(LAdir)/libcblas.a $(LAdir)/libatlas.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, ...), [default]
# -DNoChange : all lower case (IBM RS6000),
# -DUpCase : all upper case (Cray),
# -DAdd__ : the FORTRAN compiler in use is f2c.
#
# 2) C and Fortran 77 integer mapping
#
# -DF77_INTEGER=int : Fortran 77 INTEGER is a C int, [default]
# -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, [default]
# -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;},
# -DStringCrayStyle : Special option for Cray machines, which uses
# Cray fcd (fortran character descriptor) for
# interoperation.
#
F2CDEFS =
#
# ----------------------------------------------------------------------
# - HPL includes / libraries / specifics -------------------------------
# ----------------------------------------------------------------------
#
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib)
#
# - Compile time options -----------------------------------------------
#
# -DHPL_COPY_L force the copy of the panel L before bcast;
# -DHPL_CALL_CBLAS call the cblas interface;
# -DHPL_CALL_VSIPL call the vsip library;
# -DHPL_DETAILED_TIMING enable detailed timers;
#
# By default HPL will:
# *) not copy L before broadcast,
# *) call the BLAS Fortran 77 interface,
# *) not display detailed timing information.
#
HPL_OPTS = -DHPL_CALL_CBLAS
#
# ----------------------------------------------------------------------
#
HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
#
# ----------------------------------------------------------------------
# - Compilers / linkers - Optimization flags ---------------------------
# ----------------------------------------------------------------------
#
CC = /usr/bin/gcc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
#
# On some platforms, it is necessary to use the Fortran linker to find
# the Fortran internals used in the BLAS library.
#
LINKER = /usr/bin/g77
LINKFLAGS = $(CCFLAGS)
#
ARCHIVER = ar
ARFLAGS = r
RANLIB = echo
#
# ----------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.scyld.com/pipermail/beowulf/attachments/20070409/00aa9de6/attachment.html


More information about the Beowulf mailing list