Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Makefiles for Fortran95 interfaces to BLAS and LAPACK

norio_t_
Beginner
609 Views

I had a problem with makefiles to generate module files (*.mod files) for the Fortran95 interfaces to BLAS and LAPACK provided in MKL for Linux. These makefiles are installed by default under

/opt/intel/mkl/interfaces/blas95/makefile

/opt/intel/mkl/interfaces/lapack95/makefile

I wanted to generate the *.mod files with gfortran. By executing the

norio@myhost:/opt/intel/mkl/interfaces/blas95$ make libintel64 FC=gfortran INSTALL_DIR=/home/norio/opt/intel/mkl2018_interfaces_gfortran720 interface=lp64

norio@myhost:/opt/intel/mkl/interfaces/lapack95$ make libintel64 FC=gfortran INSTALL_DIR=/home/norio/opt/intel/mkl2018_interfaces_gfortran720 interface=lp64

did not generate lapack95.mod under

/home/norio/opt/intel/mkl2018_interfaces_gfortran720/include/intel64/lp64/

The variable mod95 does not seem to be assigned at all. Then, the target of
the following block in the makefiles above becomes a directory which is supposed contain
the *.mod files rather than the *.mod files them selves.


$(mod_path)/$(mod95): $(inc_path)/$(iface_95)
        mkdir -p $(obj77_path)
        mkdir -p $(mod_path)
        $(FC) $(SPEC_OPT) $(FOPTS) $(opt_mod)$(mod_path) $(optsc) -o $(obj77_path)/mkl_lapack.$(sufobj) $<

This directory is shared by the results of blas95 and lapack95 (and perhaps
other) makefiles. Hence the block above is executed only for the makefile
run first and not for the other makefile run later.

To circumvent this situation, I did as following.

norio@myhost:/opt/intel/mkl/interfaces/blas95$ make libintel64 FC=gfortran INSTALL_DIR=/home/norio/opt/intel/mkl2018_interfaces_gfortran720 interface=lp64

norio@myhost:/opt/intel/mkl/interfaces/lapack95$ make libintel64 FC=gfortran INSTALL_DIR=/home/norio/opt/intel/mkl2018_interfaces_gfortran720 interface=lp64 mod95=lapack.mod

That is, I passed `mod95` variable as an argument to the lapack95 makefile.

If I need to generate multiple *.mod files from a single makefile,
there may be a problem. (f95_precision.mod is generated both from
blas95 and lapack95, and I only need to generate it from either
one of them.) In that case, I can target a temporary directory and
manually copy the generated files.

If this is a bug, I wish Intel could fix it. I had the same problem at least in one release of MKL2017 as well.

Thank you for sharing MKL with the community.

 

0 Kudos
1 Reply
Ying_H_Intel
Employee
609 Views

Hi Norio, 

Thank you a lot for the report.  We will record it and fix it in future release. 

If any new issue, please feel free to submit to Online Service Center

Thanks

Ying 

0 Kudos
Reply