1

Я пытаюсь скомпилировать HPL 2.1 на кластерном сервере Debian MOSIX, но процесс make завершается с ошибками, как показано ниже. Включены мой make-файл и две версии выходных данных: одна из стандартного выполнения, а другая из выполнения с флагом отладки.

Любая помощь и рекомендации будут очень признательны!

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
#
# ----------------------------------------------------------------------

Сделать вывод:

~/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.

Вывод -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'.

Спасибо!

1 ответ1

0

Сообщение об ошибке /bin/bash: /homes/laket/BLAS: Is a directory указано, что что-то указывает bash выполнить /homes/laket/BLAS в качестве исполняемого файла, но /homes/laket/BLAS является каталогом.

На самом деле в вашем Makefile вы можете найти строку

LINKER       = ~/BLAS

Скорее всего, ~ расширяется до /homes/laket . Чтобы проверить это, запустите следующий код в bash:

echo ~

Поэтому, скорее всего, вам нужно установить переменную LINKER в Makefile на правильный компоновщик Fortran.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .