Cometa erros ao compilar o HPL-2.1 no servidor Debian em cluster MOSIX

1

Eu estou tentando compilar HPL 2.1 em um servidor Debian em cluster MOSIX, mas o processo de make termina com erros como mostrado abaixo. Estão incluídos o meu makefile e duas versões de saída: uma de uma execução padrão e outra de uma execução executada com o sinalizador de depuração.

Qualquer ajuda e orientação seria muito apreciada!

O makefile:

# ----------------------------------------------------------------------
# - shell --------------------------------------------------------------
# ----------------------------------------------------------------------
#
SHELL        = /bin/bash
#
CD           = cd
CP           = cp
LN_S         = ln -s
MKDIR        = mkdir
RM           = /bin/rm -f
TOUCH        = touch
#
# ----------------------------------------------------------------------
# - Platform identifier ------------------------------------------------
# ----------------------------------------------------------------------
#
ARCH         = Linux_PII_CBLAS
#
# ----------------------------------------------------------------------
# - HPL Directory Structure / HPL library ------------------------------
# ----------------------------------------------------------------------
#
TOPdir       = $(HOME)/hpl-2.1
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/local
MPinc        = -I$(MPdir)/include
MPlib        = $(MPdir)/lib/libmpi.so
#
# ----------------------------------------------------------------------
# - 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)/CBLAS/lib
LAinc        =
LAlib        = $(LAdir)/cblas_LINUX.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       = ~/BLAS
LINKFLAGS    = $(CCFLAGS)
#
ARCHIVER     = ar
ARFLAGS      = r
RANLIB       = echo
#
# ----------------------------------------------------------------------

Fazer saída:

~/BLAS  -DHPL_CALL_CBLAS -I/homes/laket/hpl-2.1/include -I/homes/laket/hpl-2.1/include/Linux_PII_CBLAS  -I/usr/local/include -fomit-frame-pointer -O3 -funroll-loops -o /homes/laket/hpl-2.1/bin/Linux_PII_CBLAS/xhpl HPL_pddriver.o         HPL_pdinfo.o           HPL_pdtest.o /homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a  /homes/laket/CBLAS/lib/cblas_LINUX.a /usr/local/lib/libmpi.so
/bin/bash: /homes/laket/BLAS: Is a directory
make[2]: *** [dexe.grd] Error 126
make[2]: Target 'all' not remade because of errors.
make[2]: Leaving directory '/homes/laket/hpl-2.1/testing/ptest/Linux_PII_CBLAS'
make[1]: *** [build_tst] Error 2
make[1]: Leaving directory '/homes/laket/hpl-2.1'
make: *** [build] Error 2
make: Target 'all' not remade because of errors.

Produzir saída -d:

      Considering target file '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a'.
       Looking for an implicit rule for '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a'.
       Trying pattern rule with stem 'libhpl.a'.
       Trying implicit prerequisite '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a,v'.
       Trying pattern rule with stem 'libhpl.a'.
       Trying implicit prerequisite '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/RCS/libhpl.a,v'.
       Trying pattern rule with stem 'libhpl.a'.
       Trying implicit prerequisite '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/RCS/libhpl.a'.
       Trying pattern rule with stem 'libhpl.a'.
       Trying implicit prerequisite '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/s.libhpl.a'.
       Trying pattern rule with stem 'libhpl.a'.
       Trying implicit prerequisite '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/SCCS/s.libhpl.a'.
       No implicit rule found for '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a'.
       Finished prerequisites of target file '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a'.
      No need to remake target '/homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a'.
     Finished prerequisites of target file 'dexe.grd'.
    Must remake target 'dexe.grd'.
~/BLAS  -DHPL_CALL_CBLAS -I/homes/laket/hpl-2.1/include -I/homes/laket/hpl-2.1/include/Linux_PII_CBLAS  -I/usr/local/include -fomit-frame-pointer -O3 -funroll-loops -o /homes/laket/hpl-2.1/bin/Linux_PII_CBLAS/xhpl HPL_pddriver.o         HPL_pdinfo.o           HPL_pdtest.o /homes/laket/hpl-2.1/lib/Linux_PII_CBLAS/libhpl.a  /homes/laket/CBLAS/lib/cblas_LINUX.a /usr/local/lib/libmpi.so
Putting child 0x0129a2c0 (dexe.grd) PID 24853 on the chain.
Live child 0x0129a2c0 (dexe.grd) PID 24853
/bin/bash: /homes/laket/BLAS: Is a directory
make[2]: Reaping losing child 0x0129a2c0 PID 24853
*** [dexe.grd] Error 126
Removing child 0x0129a2c0 PID 24853 from chain.
    Failed to remake target file 'dexe.grd'.
   Finished prerequisites of target file 'dexe'.
  Giving up on target file 'dexe'.
 Finished prerequisites of target file 'all'.
Giving up on target file 'all'.
make[2]: Target 'all' not remade because of errors.
make[2]: Leaving directory '/homes/laket/hpl-2.1/testing/ptest/Linux_PII_CBLAS'
Reaping losing child 0x010ce900 PID 24841
make[1]: *** [build_tst] Error 2
Removing child 0x010ce900 PID 24841 from chain.
Failed to remake target file 'build_tst'.
make[1]: Leaving directory '/homes/laket/hpl-2.1'
Reaping losing child 0x00d91ae0 PID 24774
make: *** [build] Error 2
Removing child 0x00d91ae0 PID 24774 from chain.
    Failed to remake target file 'build'.
   Finished prerequisites of target file 'install'.
make: Target 'all' not remade because of errors.  Giving up on target file 'install'.
 Finished prerequisites of target file 'all'.
Giving up on target file 'all'.

Obrigado!

    
por tlake 04.11.2013 / 22:00

1 resposta

0

A mensagem de erro /bin/bash: /homes/laket/BLAS: Is a directory diz que algo está instruindo bash a executar /homes/laket/BLAS como um arquivo executável, mas /homes/laket/BLAS é um diretório.

Realmente no seu Makefile você pode encontrar a linha

LINKER       = ~/BLAS

Provavelmente ~ expande para /homes/laket . Para verificar isso, execute o seguinte código em bash :

echo ~

Provavelmente, você precisa definir a variável LINKER no Makefile para o vinculador Fortran correto.

    
por 04.11.2013 / 22:34