- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
On Ubuntu 20.04, I've installed the parallel_studio_xe_2020.1.102. Now I try to compile the mstar with ifort. In the makefile shipped with this project, there are the following settings:
FCFLAGS = -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -qopenmp -ldl
FLFLAGS = -i8 -I${MKLROOT}/include -qopenmp
Although I can successfully compile the project with the above settings, but I still not so clear on the differences of the above two variables. Any hints will be highly appreciated.
OTOH, I also try to generate the libraries and compiler options with the interactive mode of mkl_link_tool as shown below:
mkl_link_tool -interactive
The results are listed below:
Output
======
Compiler option(s):
-i8 -I${MKLROOT}/include
Linking line:
-L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
Environment variable(s):
export LD_LIBRARY_PATH=${MKLROOT}/lib/intel64:$LD_LIBRARY_PATH;
Then I try to use the following settings in the makefile but failed to compile:
FCFLAGS = -i8 -I${MKLROOT}/include
FLFLAGS = -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
The errors are shown below:
ld: eigvs.o: in function `eigvs_':
eigvs.f90:(.text+0x2a9): undefined reference to `ssyevd_'
ld: eigvs.f90:(.text+0x7e1): undefined reference to `ssyevd_'
ld: eigvz.o: in function `eigvz_':
eigvz.f90:(.text+0x398): undefined reference to `cheevd_'
ld: eigvz.f90:(.text+0xaea): undefined reference to `cheevd_'
make: *** [makefile:35: mstar] Error 1
Any hints for this problem?
Regards,
HY
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I think that you have FCFLAGS and FLFLAGS interchanged in the first pair that you list, supposedly taken from the makefile. The second letter of the make variable is probably selected to help the user remember: 'C' for "compiler" and 'L' for linker. What you showed later on appears OK, however.
In the source lines containing calls to ssyevd and cheevd, do these names contain underscores already appended? Show the relevant lines of code, please.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks a lot for your reply. See the following for more detailed info:
$ egrep -inR 'ssyevd|cheevd' .
./eigvz.f90:48:call CHEEVD(jobz, uplo, n, A, n, EIGV, work, lwork, rwork, lrwork, & !...
./eigvz.f90:66:call CHEEVD(jobz, uplo, n, A, n, EIGV, work, lwork, rwork, lrwork, & !...
./eigvs.f90:45:call ssyevd(jobz, uplo, n, A, n, EIGV, work, lwork, iwork, liwork, info) ! single precision (kind=4)
./eigvs.f90:62:call ssyevd(jobz, uplo, n, A, n, EIGV, work, lwork, iwork, liwork, info) ! single precision (kind=4)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page