- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to compile hpcc using the mkl as the LA library but am running up against a roadblock.
This is what I am getting:
Some bits from the make file
Any advice woul be much appreciated.
This is what I am getting:
[plain][15:41] user@NODE-00/lustre/user/hpcc-1.4.1 make arch=test mkdir hpl/lib/rcac mkdir: cannot create directory `hpl/lib/rcac': File exists make: [all] Error 1 (ignored) ( cd hpl/lib/arch/build ; make arch=rcac -f Makefile.hpcc ) make[1]: Entering directory `/lustre/user/hpcc-1.4.1/hpl/lib/arch/build' mpicc -DHPL_CALL_CBLAS -I../../../include -I../../../include/rcac /opt/intel/mkl/include -I/usr/mpi/gcc/mvapich2-1.6/include -fomit-frame-pointer -O3 -funroll-loops -W -Wall -o ../../../../hpcc ../../../lib/rcac/libhpl.a /opt/intel/mkl/lib/intel64/libmkl_core.a /usr/mpi/gcc/mvapich2-1.6/lib/libmpich.so -l /usr/mpi/gcc/mvapich2-1.6/include/librdmacm.so /opt/intel/mkl/include: file not recognized: Is a directory collect2: ld returned 1 exit status make[1]: *** [../../../../hpcc] Error 1 make[1]: Leaving directory `/lustre/user/hpcc-1.4.1/hpl/lib/arch/build' make: *** [all] Error 2[/plain]
Some bits from the make file
[plain]# ARCH = $(arch) # # ---------------------------------------------------------------------- # - HPL Directory Structure / HPL library ------------------------------ # ---------------------------------------------------------------------- # TOPdir = ../../.. INCdir = $(TOPdir)/include BINdir = $(TOPdir)/bin/$(ARCH) LIBdir = $(TOPdir)/lib/$(ARCH) # HPLlib = $(LIBdir)/libhpl.a # # ---------------------------------------------------------------------- # - MPI directories - library ------------------------------------------ # ---------------------------------------------------------------------- # 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/mpi/gcc/mvapich2-1.6 MPinc = -I$(MPdir)/include MPlib = $(MPdir)/lib/libmpich.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 = /opt/intel/mkl/lib/intel64 LAinc = /opt/intel/mkl/include LAlib = -Wl,--start-group $(LAdir)/libmkl_intel_lp64.a $(LAdir)/libmkl_intel_thread.a $(LAdir)/libmkl_core.a -Wl, --en d-group -lpthread -lm 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 Fortran 77 BLAS interface # *) not display detailed timing information. # HPL_OPTS = -DHPL_CALL_CBLAS # # ---------------------------------------------------------------------- # HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES) # # ---------------------------------------------------------------------- # - Compilers / linkers - Optimization flags --------------------------- # ---------------------------------------------------------------------- # CC = mpicc CCNOOPT = $(HPL_DEFS) # CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -W -Wall # LINKER = mpicc LINKFLAGS = $(CCFLAGS) # ARCHIVER = ar ARFLAGS = r RANLIB = echo # # ---------------------------------------------------------------------- [/plain]
Any advice woul be much appreciated.
Link Copied
12 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It appears to me that this line in the makefile
HPL_INCLUDES=-I$(INCdir)-I$(INCdir)/$(ARCH)$(LAinc)$(MPinc)
should, instead, have been
HPL_INCLUDES=-I$(INCdir)-I$(INCdir)/$(ARCH) -I$(LAinc) -I$(MPinc)
Without those -I prefixes, Make will issue a compile command with directory names in a context where source files are expected by the compiler. That is what is seen in the compiler error message.
HPL_INCLUDES=-I$(INCdir)-I$(INCdir)/$(ARCH)$(LAinc)$(MPinc)
should, instead, have been
HPL_INCLUDES=-I$(INCdir)-I$(INCdir)/$(ARCH) -I$(LAinc) -I$(MPinc)
Without those -I prefixes, Make will issue a compile command with directory names in a context where source files are expected by the compiler. That is what is seen in the compiler error message.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I made the changes you suggested and did a clean make but am still getting the same error
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please make sure the changes you made are consistent. Namely you should have only added "-I" to the LAinc dir, since MPinc already had this prefix (MPinc=-I$(MPdir)/include).
Also this link may help you avoid some problems
http://software.intel.com/en-us/articles/performance-tools-for-software-developers-use-of-intel-mkl-in-hpcc-benchmark/
Best regards,
Vladimir
Also this link may help you avoid some problems
http://software.intel.com/en-us/articles/performance-tools-for-software-developers-use-of-intel-mkl-in-hpcc-benchmark/
Best regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The change was made but still running into the same error. I also went
ahead and removed the LAinc reference entirely just leaving it blank as
we do this for our other clusters as it isn't needed but was still
getting the errors referencing /opt/intel/mkl/include. So where exactly does the makescript pull that from if it is no where in the makefile?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
So in going back through the guide that was linked Build MPI MKL FFTW library that the make file for that does not include an option to make the library against mvapich? Is there a way to make against mvapich or should I just give up on trying to use mvapich?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Okay so I realized that when you try and make hpcc it goes into the hpl directory as well and uses that make file to put together hpl. So I made a copy of the make file and put it into the HPL directory. I am however now getting the following error:
[plain]mpicc -DHPL_CALL_CBLAS -I../../../include -I../../../include/test -fomit-frame-pointer -O3 -funroll-loops -W -Wall -o ../../../../hpcc ../../../lib/test/libhpl.a -Wl,--start-group /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/mkl/lib/intel64/libmkl_core.a -Wl, --end-group -lpthread -lm /usr/mpi/gcc/mvapich2-1.6/lib/libmpich.so /usr/bin/ld: : No such file: No such file or directory collect2: ld returned 1 exit status make[1]: *** [../../../../hpcc] Error 1 make[1]: Leaving directory `/lustre/user/hpcc-1.4.1/hpl/lib/arch/build' make: *** [all] Error 2[/plain]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting wilshire461
So in going back through the guide that was linked Build MPI MKL FFTW library that the make file for that does not include an option to make the library against mvapich? Is there a way to make against mvapich or should I just give up on trying to use mvapich?
Best regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting wilshire461
Okay so I realized that when you try and make hpcc it goes into the hpl directory as well and uses that make file to put together hpl. So I made a copy of the make file and put it into the HPL directory. I am however now getting the following error:
- mpicc-DHPL_CALL_CBLAS-I../../../include-I../../../include/test-fomit-frame-pointer-O3-funroll-loops-W-Wall-o../../../../hpcc../../../lib/test/libhpl.a-Wl,--start-group/opt/intel/mkl/lib/intel64/libmkl_intel_lp64.a/opt/intel/mkl/lib/intel64/libmkl_intel_thread.a/opt/intel/mkl/lib/intel64/libmkl_core.a-Wl,--end-group-lpthread-lm/usr/mpi/gcc/mvapich2-1.6/lib/libmpich.so
- /usr/bin/ld::Nosuchfile:Nosuchfileordirectory
- collect2:ldreturned1exitstatus
- make[1]:***[../../../../hpcc]Error1
- make[1]:Leavingdirectory`/lustre/user/hpcc-1.4.1/hpl/lib/arch/build'
- make:***[all]Error2
[plain]mpicc -DHPL_CALL_CBLAS -I../../../include -I../../../include/test -fomit-frame-pointer -O3 -funroll-loops -W -Wall -o ../../../../hpcc ../../../lib/test/libhpl.a -Wl,--start-group /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/mkl/lib/intel64/libmkl_core.a -Wl, --end-group -lpthread -lm /usr/mpi/gcc/mvapich2-1.6/lib/libmpich.so /usr/bin/ld: : No such file: No such file or directory collect2: ld returned 1 exit status make[1]: *** [../../../../hpcc] Error 1 make[1]: Leaving directory `/lustre/user/hpcc-1.4.1/hpl/lib/arch/build' make: *** [all] Error 2[/plain]
Please eliminate the extra space in "-Wl,--end-group".
Best regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yeah I caught that, still no dice though as now I am getting a bunch of errors with the compile not being able to pull math functions from the library and such. Also when I try to put together the fftw2x_cdft it complains about mpicc not being found however it is installed and working fine as per the code below:
[plain][09:08] user@NODE-00/opt/intel/mkl/interfaces/fftw2x_cdft mpicc Error: Command line argument is needed! Usage: mpicc [options] file.... Available mpicc options: -echo - Show exactly what this program is doing. This option should normally not be used. -show - Show the commands that would be used without runnning them. -compile-info - Show how to compile a program. -link-info - Show how to link a program. -v - Version info of mpicc and its native compiler gcc. -help - Give this help message. -mpe=XXX - Build with MPE option, XXX. See "mpicc -mpe=help" for more information. -profile=XXX - Use profiling configuration file, /usr/mpi/gcc/mvapich2-1.6/etc/XXX.conf As a special case, libXXX.so or libXXX.la may be used if the library is in /usr/mpi/gcc/mvapich2-1.6/lib. -config=XXX - Use configuration file, mpicc-XXX.conf. -cc=xxx - Reset the native compiler to xxx. [09:09] user@NODE-00/opt/intel/mkl/interfaces/fftw2x_cdft sudo make libintel64 mpi=mpich2 PRECISION=MKL_SINGLE interface =ilp64 make lib _IA=intel64 Ibin=bin64 make[1]: Entering directory `/opt/intel/composer_xe_2011_sp1.6.233/mkl/interfaces/fftw2x_cdft' rm -rf obj rm -f ../../lib/intel64/libfftw2x_cdft_SINGLE_ilp64.a mkdir -p obj mpicc -cc=icc -DMKL_ILP64 -c -w -DMKL_SINGLE -I../../include wrappers/1d_create_plan.c -o obj/1d_create_plan.o make[1]: mpicc: Command not found make[1]: *** [obj/1d_create_plan.o] Error 127 make[1]: Leaving directory `/opt/intel/composer_xe_2011_sp1.6.233/mkl/interfaces/fftw2x_cdft' make: *** [libintel64] Error 2[/plain]Here are some of the errors I am now getting:
[bash]mpicc -DHPL_CALL_CBLAS -I../../../include -I../../../include/rcac -fomit-frame-pointer -O3 -funroll-loops -W -Wall -o ../../../../hpcc ../../../lib/rcac/libhpl.a /opt/intel/mkl/lib/intel64/libmkl_gnu_thread.a /usr/mpi/gcc/mvapich2-1.6/lib/libmpich.so ../../../lib/rcac/libhpl.a(io.o): In function `HPCC_ProcessGrid': io.c:(.text+0x91): undefined reference to `sqrt' ../../../lib/rcac/libhpl.a(io.o): In function `HPCC_Defaults': io.c:(.text+0x3504): undefined reference to `sqrt' io.c:(.text+0x380e): undefined reference to `sqrt' ../../../lib/rcac/libhpl.a(tstfft.o): In function `HPCC_TestFFT': tstfft.c:(.text+0x465): undefined reference to `log' tstfft.c:(.text+0x4b7): undefined reference to `log' tstfft.c:(.text+0x4ca): undefined reference to `log' ../../../lib/rcac/libhpl.a(mpifft.o): In function `HPCC_MPIFFT': mpifft.c:(.text+0x8d3): undefined reference to `log' mpifft.c:(.text+0x916): undefined reference to `log' ../../../lib/rcac/libhpl.a(mpifft.o):mpifft.c:(.text+0x929): more undefined references to `log' follow ../../../lib/rcac/libhpl.a(HPL_pdtest.o): In function `HPL_pdtest': HPL_pdtest.c:(.text+0x743): undefined reference to `cblas_dgemv' HPL_pdtest.c:(.text+0xb4b): undefined reference to `cblas_idamax' ../../../lib/rcac/libhpl.a(pdmatcmp.o): In function `pdmatcmp': pdmatcmp.c:(.text+0xc4): undefined reference to `cblas_idamax' pdmatcmp.c:(.text+0x117): undefined reference to `cblas_daxpy' pdmatcmp.c:(.text+0x130): undefined reference to `cblas_idamax' ../../../lib/rcac/libhpl.a(pdtrans.o): In function `pdtrans': pdtrans.c:(.text+0x3b7): undefined reference to `cblas_dscal' pdtrans.c:(.text+0x302d): undefined reference to `cblas_daxpy' pdtrans.c:(.text+0x312e): undefined reference to `cblas_daxpy' pdtrans.c:(.text+0x31ed): undefined reference to `cblas_dcopy' pdtrans.c:(.text+0x32e0): undefined reference to `cblas_dcopy' ../../../lib/rcac/libhpl.a(bench_lat_bw_1.5.2.o): In function `cross_ping_pong_controlled': bench_lat_bw_1.5.2.c:(.text+0x129e): undefined reference to `sqrt' [/bash]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
mpicc is most probably not found because sudo does not preserve the PATH variable. You can check this by running something like "sudo printenv PATH".
In order for this to be fixed you need to
either pass the path to the MPI directory via the mpidir parameter of the wrapper's makefile,
or take special actions to preserve the PATH by sudo.
The second series of errors is because you neither linked in libm nor MKL (you have only the threading layer added). The whole group of MKL libraries must be added to the link line.
Best regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am now getting new and more interesting errors. I managed to get both of the fft bits compiled as suggested by the guide but funnily enough I get the following errors
Note: I got ATLAS compiled so for the meantime using that as my library and had no problems getting hpcc compiled using that, so for the time being this is an exercise in curiosity while I go forward and do science with the math library that does work.
[plain]In file included from ../../../../FFT/hpccfft.h:43, from ../../../../FFT/bcnrand.c:46: ../../../../FFT/wrapfftw.h:4:18: error: fftw.h: No such file or directory In file included from ../../../../FFT/hpccfft.h:43, from ../../../../FFT/bcnrand.c:46: ../../../../FFT/wrapfftw.h:21: error: expected specifier-qualifier-list before fftw_complex ../../../../FFT/wrapfftw.h:28: error: expected declaration specifiers or ... before fftw_direction ../../../../FFT/wrapfftw.h:30: error: expected declaration specifiers or ... before fftw_complex ../../../../FFT/wrapfftw.h:30: error: expected declaration specifiers or ... before fftw_complex In file included from ../../../../FFT/bcnrand.c:46: ../../../../FFT/hpccfft.h:47: error: expected declaration specifiers or ... before fftw_complex ../../../../FFT/hpccfft.h:47: error: expected declaration specifiers or ... before fftw_complex ../../../../FFT/hpccfft.h:48: error: expected ) before * token ../../../../FFT/hpccfft.h:49: error: expected ) before * token make[1]: *** [../../../../FFT/bcnrand.o] Error 1 [/plain]Which seems an awful lot like something didn't get compiled correctly. Any thoughts?
Note: I got ATLAS compiled so for the meantime using that as my library and had no problems getting hpcc compiled using that, so for the time being this is an exercise in curiosity while I go forward and do science with the math library that does work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The error message is explicit:
../../../../FFT/wrapfftw.h:4:18:error:fftw.h:Nosuchfileordirectory
The required include file is in the/include/fftw directory, to use which you have to add -I/include/fftw to the compiler options.
../../../../FFT/wrapfftw.h:4:18:error:fftw.h:Nosuchfileordirectory
The required include file is in the
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page