title: undefined references ATLAS, MPI, CBLAS when compiling HPL in Centos6
body: <p>I am trying to run HPL 2.1 in my Centos systems.</p>
  
  <p>This is my make file:</p>
  
  <pre><code>[root@cadejos-0 hpl]# cat Make.cadejos 
  #  
  #  -- High Performance Computing Linpack Benchmark (HPL)                
  #     HPL - 2.1 - October 26, 2012                          
  #     Antoine P. Petitet                                                
  #     University of Tennessee, Knoxville                                
  #     Innovative Computing Laboratory                                 
  #     (C) Copyright 2000-2008 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 Laboratory.             
  #                                                                       
  #  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         = Linux_PII_CBLAS
  #
  # ----------------------------------------------------------------------
  # - 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/mpich2-x86_64
  MPinc        = -I$(MPdir)
  MPlib        = /usr/lib64/mpich2/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        = /usr/include/atlas-x86_64-base/
  LAinc        = -I$(LAdir)
  LAlib        = /usr/lib64/atlas/libatlas.a /usr/lib64/atlas/libcblas.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 -DHPL_DETAILED_TIMING
  #
  # ----------------------------------------------------------------------
  #
  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
  #
  # ----------------------------------------------------------------------
  </code></pre>
  
  <p>I got some errors fixed here and there but i cant get past this lot o' undefined references:</p>
  
  <pre><code>/usr/bin/gcc -o HPL_pdtest.o -c  -DHPL_CALL_CBLAS -DHPL_DETAILED_TIMING -I/root/hpl/include -I/root/hpl/include/Linux_PII_CBLAS -I/usr/include/atlas-x86_64-base/ -I/usr/include/mpich2-x86_64 -fomit-frame-pointer -O3 -funroll-loops  ../HPL_pdtest.c
  /usr/bin/g77  -DHPL_CALL_CBLAS -DHPL_DETAILED_TIMING -I/root/hpl/include -I/root/hpl/include/Linux_PII_CBLAS -I/usr/include/atlas-x86_64-base/ -I/usr/include/mpich2-x86_64 -fomit-frame-pointer -O3 -funroll-loops -o /root/hpl/bin/Linux_PII_CBLAS/xhpl HPL_pddriver.o         HPL_pdinfo.o           HPL_pdtest.o /root/hpl/lib/Linux_PII_CBLAS/libhpl.a  /usr/lib64/atlas/libatlas.a /usr/lib64/atlas/libcblas.a /usr/lib64/mpich2/lib/libmpich.a
  /usr/lib64/atlas/libcblas.a(cblas_dgemm.o): In function `cblas_dgemm':
  (.text+0x321): undefined reference to `ATL_dsyrk'
  /usr/lib64/atlas/libcblas.a(cblas_dgemm.o): In function `cblas_dgemm':
  (.text+0x186): undefined reference to `ATL_dgemm'
  /usr/lib64/atlas/libcblas.a(cblas_dgemm.o): In function `cblas_dgemm':
  (.text+0x35e): undefined reference to `ATL_dsyreflect'
  ... A LOT MORE ...
  /usr/lib64/mpich2/lib/libmpich.a(info_getvallen.o): In function `MPI_Info_get_valuelen':
  (.text+0x37b): undefined reference to `pthread_setspecific'
  /usr/lib64/mpich2/lib/libmpich.a(info_getvallen.o): In function `MPI_Info_get_valuelen':
  (.text+0x38d): undefined reference to `pthread_getspecific'
  /usr/lib64/mpich2/lib/libmpich.a(info_getvallen.o): In function `MPI_Info_get_valuelen':
  (.text+0x3b7): undefined reference to `pthread_setspecific'
  collect2: ld returned 1 exit status
  make[2]: *** [dexe.grd] Error 1
  make[2]: Leaving directory `/root/hpl/testing/ptest/cadejos'
  make[1]: *** [build_tst] Error 2
  make[1]: Leaving directory `/root/hpl'
  make: *** [build] Error 2
  </code></pre>
  
  <p>I think it has something to do with the libs path but i am unable to go on...</p>
  
  <p>Has anyone run into this kind or problem?</p>