Binh Thien
Binh Thien

Reputation: 395

How to link library scalapack and blacs while compilation

When compiling a fortran code, I set

FCL         = mpiifort -qmkl=sequential
LLIBS      += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64

but when compiling code, it always links to libmkl_scalapack_lp64.so, not libmkl_scalapack_lp64.a. Then error appears,

ifort: command line warning #10006: ignoring unknown option '-qmkl=sequential'
mpi.o: In function `m_max_d_':
mpi.f90:(.text+0x4b52): undefined reference to `dcopy_'
umco.o: In function `umco_mp_umco_calc_trafo_':
umco.f90:(.text+0x8c30): undefined reference to `dgetrf_'
umco.f90:(.text+0x8c69): undefined reference to `dgetri_'
umco.f90:(.text+0x8dde): undefined reference to `dgetri_'
umco.f90:(.text+0x9911): undefined reference to `dgeev_'
umco.f90:(.text+0x9aa4): undefined reference to `dgeev_'
mathtools.f90:(.text+0x3d08): undefined reference to `zgesdd_'
In function `w90_utility_mp_utility_zgemm_new_':
utility.F90:(.text+0x3712): undefined reference to `zgemm_'
/home/app/intel/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so: undefined reference to `ssteqr_'
/home/app/intel/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so: undefined reference to `dlahqr_'

What is the correct way to link these two libraries?

Upvotes: 0

Views: 1035

Answers (1)

Ian Bush
Ian Bush

Reputation: 7432

It depends very much on what you are doing and compiler versions, amongst other things. As such you don't provide sufficient detail for us to answer the question. But the recommended way is to use the Intel link line advisor, which will help you find the answer by filling in all the required details into a web form. You can find this at https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.tephcr

Upvotes: 1

Related Questions