- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
'I have just repaired my VS 2017 installation after some weird problem (maybe caused by PS 2017 Update 2 install)
After that I had to completely uninstall and reinstall all my PS products because there was no other way to get it to reintegrate into VS 2015 (change components via Control Panel Uninstall... for example did not do it)
With this done the Intel Performance Libraries appears in the VS pulldowns again, and the "use MKL" choice now lets C++ find the include files. The link, on the other hand, is a dismal failure. It doesn't work, and there is no obvious way of deciding why it doesn't work - for example the "whole command line" property on the project - linker property page does not include any MKL stuff even when it does work
To say that I find the integration of PS into VS to be a source of frustration rather than help is an understatement. It is poorly documented and a continuous source of problems.
1>findBestPoints.obj : error LNK2019: unresolved external symbol LAPACKE_dlasrt referenced in function "public: virtual void __cdecl FindBestPoints_Impl_Sort::prepareToPop(void)" (?prepareToPop@FindBestPoints_Impl_Sort@@UEAAXXZ)
1>map3d_optimizer_old.obj : error LNK2001: unresolved external symbol LAPACKE_dlasrt
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_init_threads referenced in function "public: void __cdecl FFTWBase::init(double *,double (*)[2],unsigned __int64,unsigned __int64,unsigned __int64,int)" (?init@FFTWBase@@QEAAXPEANPEAY01N_K22H@Z)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_plan_with_nthreads referenced in function "public: void __cdecl FFTWBase::init(double *,double (*)[2],unsigned __int64,unsigned __int64,unsigned __int64,int)" (?init@FFTWBase@@QEAAXPEANPEAY01N_K22H@Z)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_cleanup_threads referenced in function "public: void __cdecl FFTWBase::fini(void)" (?fini@FFTWBase@@QEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_plan_dft_r2c_2d referenced in function "protected: void __cdecl FFTWBase::create_plan(void)" (?create_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_plan_dft_c2r_2d referenced in function "protected: void __cdecl FFTWBase::create_plan(void)" (?create_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_plan_dft_r2c_3d referenced in function "protected: void __cdecl FFTWBase::create_plan(void)" (?create_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_plan_dft_c2r_3d referenced in function "protected: void __cdecl FFTWBase::create_plan(void)" (?create_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_destroy_plan referenced in function "protected: void __cdecl FFTWBase::delete_plan(void)" (?delete_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_cleanup referenced in function "protected: void __cdecl FFTWBase::delete_plan(void)" (?delete_plan@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftw_execute referenced in function "protected: void __cdecl FFTWBase::forward_execute(void)" (?forward_execute@FFTWBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_init_threads referenced in function "public: void __cdecl FFTWFBase::init(float *,float (*)[2],unsigned __int64,unsigned __int64,unsigned __int64,int)" (?init@FFTWFBase@@QEAAXPEAMPEAY01M_K22H@Z)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_plan_with_nthreads referenced in function "public: void __cdecl FFTWFBase::init(float *,float (*)[2],unsigned __int64,unsigned __int64,unsigned __int64,int)" (?init@FFTWFBase@@QEAAXPEAMPEAY01M_K22H@Z)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_cleanup_threads referenced in function "public: void __cdecl FFTWFBase::fini(void)" (?fini@FFTWFBase@@QEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_plan_dft_r2c_2d referenced in function "protected: void __cdecl FFTWFBase::create_plan(void)" (?create_plan@FFTWFBase@@IEAAXXZ)
1>spider.obj : error LNK2001: unresolved external symbol fftwf_plan_dft_r2c_2d
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_plan_dft_r2c_2d
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_plan_dft_c2r_2d referenced in function "protected: void __cdecl FFTWFBase::create_plan(void)" (?create_plan@FFTWFBase@@IEAAXXZ)
1>spider.obj : error LNK2001: unresolved external symbol fftwf_plan_dft_c2r_2d
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_plan_dft_c2r_2d
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_plan_dft_r2c_3d referenced in function "protected: void __cdecl FFTWFBase::create_plan(void)" (?create_plan@FFTWFBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_plan_dft_c2r_3d referenced in function "protected: void __cdecl FFTWFBase::create_plan(void)" (?create_plan@FFTWFBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_destroy_plan referenced in function "protected: void __cdecl FFTWFBase::delete_plan(void)" (?delete_plan@FFTWFBase@@IEAAXXZ)
1>spider.obj : error LNK2001: unresolved external symbol fftwf_destroy_plan
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_destroy_plan
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_cleanup referenced in function "protected: void __cdecl FFTWFBase::delete_plan(void)" (?delete_plan@FFTWFBase@@IEAAXXZ)
1>fft_base.obj : error LNK2019: unresolved external symbol fftwf_execute referenced in function "protected: void __cdecl FFTWFBase::forward_execute(void)" (?forward_execute@FFTWFBase@@IEAAXXZ)
1>spider.obj : error LNK2001: unresolved external symbol fftwf_execute
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_execute
1>fft_fftw3.obj : error LNK2019: unresolved external symbol fftw_malloc referenced in function "public: __cdecl FFTWTransformer::FFTWTransformer(unsigned __int64,unsigned __int64,unsigned __int64)" (??0FFTWTransformer@@QEAA@_K00@Z)
1>fft_fftw3.obj : error LNK2019: unresolved external symbol fftw_free referenced in function "public: __cdecl FFTWTransformer::~FFTWTransformer(void)" (??1FFTWTransformer@@QEAA@XZ)
1>fft_fftw3.obj : error LNK2019: unresolved external symbol fftwf_malloc referenced in function "public: __cdecl FFTWFTransformer::FFTWFTransformer(unsigned __int64,unsigned __int64,unsigned __int64)" (??0FFTWFTransformer@@QEAA@_K00@Z)
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_malloc
1>fft_fftw3.obj : error LNK2019: unresolved external symbol fftwf_free referenced in function "public: __cdecl FFTWFTransformer::~FFTWFTransformer(void)" (??1FFTWFTransformer@@QEAA@XZ)
1>spider_old.obj : error LNK2001: unresolved external symbol fftwf_free
1>initialize.obj : error LNK2019: unresolved external symbol LAPACKE_dgels referenced in function "void __cdecl mkl_solveNotdetermined(double *,int,int,double *,int)" (?mkl_solveNotdetermined@@YAXPEANHH0H@Z)
1>pca_optimizer.obj : error LNK2001: unresolved external symbol LAPACKE_dgels
1>initialize.obj : error LNK2019: unresolved external symbol LAPACKE_sgels referenced in function "void __cdecl mkl_solveNotdetermined(float *,int,int,float *,int)" (?mkl_solveNotdetermined@@YAXPEAMHH0H@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol vsldSSNewTask referenced in function "private: int __cdecl Pca::mkl_cov(double *,int,int,double *,double *)" (?mkl_cov@Pca@@AEAAHPEANHH00@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol vsldSSEditCovCor referenced in function "private: int __cdecl Pca::mkl_cov(double *,int,int,double *,double *)" (?mkl_cov@Pca@@AEAAHPEANHH00@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol vsldSSCompute referenced in function "private: int __cdecl Pca::mkl_cov(double *,int,int,double *,double *)" (?mkl_cov@Pca@@AEAAHPEANHH00@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol vslSSDeleteTask referenced in function "private: int __cdecl Pca::mkl_cov(double *,int,int,double *,double *)" (?mkl_cov@Pca@@AEAAHPEANHH00@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol vsldSSEditTask referenced in function "private: double __cdecl Pca::mkl_meanVec(double *,int)" (?mkl_meanVec@Pca@@AEAANPEANH@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol LAPACKE_dsytrd referenced in function "private: double * __cdecl Pca::mkl_eig(double *,int)" (?mkl_eig@Pca@@AEAAPEANPEANH@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol LAPACKE_dorgtr referenced in function "private: double * __cdecl Pca::mkl_eig(double *,int)" (?mkl_eig@Pca@@AEAAPEANPEANH@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol LAPACKE_dsteqr referenced in function "private: double * __cdecl Pca::mkl_eig(double *,int)" (?mkl_eig@Pca@@AEAAPEANPEANH@Z)
1>pca_optimizer.obj : error LNK2019: unresolved external symbol cblas_dgemm referenced in function "private: double * __cdecl Pca::mkl_multiplyMat(double *,int,int,double *,int,int)" (?mkl_multiplyMat@Pca@@AEAAPEANPEANHH0HH@Z)
1>C:\local\ipccsb\ROME1.1\Windows\rome_map3d\x64\Debug\rome_map3d.exe : fatal error LNK1120: 36 unresolved externals
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Bevin,
MKL does not provide integration for FFTW with VS. FFTW lib should be generated by your self (nmake to generate under %MKLROOT%\interface\fftw3xc) and add it to additional linkage. You will also required to include FFTW header which is saved in Please refer this link to learn:
Building Your Own FFTW3 Interface Wrapper Library
Building an Application With FFTW3 Interface Wrappers
Best regards,
Fiona
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well, that explains a small part of my problem, but it does not explain
1) Why it did work until recently when I had to repair VS and reintegrate PS into VS
2) Why the following does not work
#include <mkl.h>
{
double *A = nullptr;
int N = 0;
int M = 0;
double *B = nullptr;
int D = 0;
}
1>------ Build started: Project: Use_LAPACK, Configuration: Debug x64 ------
1> Use_LAPACK.cpp
1>Use_LAPACK.obj : error LNK2019: unresolved external symbol LAPACKE_dgels referenced in function main
1>c:\users\bevin\onedrive\documents\visual studio 2015\Projects\Use_LAPACK\x64\Debug\Use_LAPACK.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi bevin,
Seems there's something wrong with VS integration that mkl lib are not been linked. I checked IPS2017u2 do not have this bug. I recommend to re-install it. If do not want to, you could add MKL include & lib path manually. Please refer this document.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have worked through the issue and the above answer is completely wrong. I did not have to build fftw myself to solve the problem, I did not have to reinstall, I just had to add the right libraries to the link input because the MKL integration failed to put them in itself.
There is a bug in the way the Intel Compiler interacts with MKL in the Visual Studio Integration. When using the VC++ compiler the problem does not exist.
A workaround is to add the MKL libraries into the Properties -> Linker -> Input. I had to add
mkl_intel_lp64_dll.lib mkl_sequential_dll.lib mkl_core_dll.lib
Other people should use https://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-compiling-and-linking-with-microsoft-visual-cc link line advisor to get the libraries they should add
Here is my complete reproducer...
Create a C++ Win32 Console App, Name PS_2018_Bug__LAPACKE_dgels__trial1
Don't customize anything
Change to the Debug x64 configuration
Change main.cpp contents to be
#include "stdafx.h"
#include <mkl.h>
{
double *A = nullptr;
int N = 0;
int M = 0;
double *B = nullptr;
int D = 0;
}
Note: the #include <mkl.h> is marked as an error
Open the project properties
Change the Configuration to "All configurations"
Change the Intel Perf Libraries -> Use MKL to be Sequential
Change the Linker -> Debugging -> Generate map file to be Yes
Okay
The error markings soon disappear
Build the Solution - it builds successfully
Open the map file C:\Users\bevin\OneDrive\Visual Studio 2015\Projects\PS_2018_Bug__LAPACKE_dgels__trial1\x64\Debug\PS_2018_Bug__LAPACKE_dgels__trial1.map
You can see entries from
mkl_intel_lp64_dll
mkl_sequential_dll
Change the project properties -> Intel Compiler -> Use Intel C++ 2018
Clean the solution
Build the Solution - it fails
1>------ Build started: Project: PS_2018_Bug__LAPACKE_dgels__trial1, Configuration: Debug x64 ------
1> stdafx.cpp
1> PS_2018_Bug__LAPACKE_dgels__trial1.cpp
1>PS_2018_Bug__LAPACKE_dgels__trial1.obj : error LNK2019: unresolved external symbol LAPACKE_dgels referenced in function main
1>C:\Users\bevin\OneDrive\Visual Studio 2015\Projects\PS_2018_Bug__LAPACKE_dgels__trial1\x64\Debug\PS_2018_Bug__LAPACKE_dgels__trial1.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
You can see the
Include Directories: $(MKLIncludeDir);$(IncludePath)
Library Directories: $(MKLLibDir);$(LibraryPath)
Since the #include is working (no compile-time errors) we only look at the Lib Dirs
Edit it to see what the expansion is
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.0.065\windows\mkl\lib\intel64_win
Open C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.0.065\windows\mkl\lib\intel64_win
the mkl_intel_lp64_dll.lib and mkl_sequential_dll.lib files are there
Change the project properties -> Intel Compiler -> Use VC++
Clean the solution
Build the solution - it succeeds again
Change the project properties -> Intel Compiler -> Use Intel C++ 2018
Open the project properties
Check the Configuration is "All configurations"
Check the Intel Perf Libraries -> Use MKL is Sequential
Edit the Linker -> Input
Add mkl_intel_lp64_dll.lib and mkl_sequential_dll.lib
Okay
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We are investigating on this bug. Thank you for posting the issue.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page