- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to link my C++ program with MKL11, but the linking fails with the following error:
2>transforms.obj : error LNK2019: unresolved external symbol DftiComputeForward referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiCommitDescriptor referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiSetValue referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiCreateDescriptor referenced in function "public: void __cdecl itpp::Transform<struct itpp::FFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiFreeDescriptor referenced in function "void __cdecl itpp::release_descriptor(struct mkl::DFTI_DESCRIPTOR *)" (?release_descriptor@itpp@@YAXPEAUDFTI_DESCRIPTOR@mkl@@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol DftiComputeBackward referenced in function "public: void __cdecl itpp::Transform<struct itpp::IFFTCplx_Traits>::compute_transform(class itpp::Vec<class std::complex<double> > const &,class itpp::Vec<class std::complex<double> > &)" (?compute_transform@?$Transform@UIFFTCplx_Traits@itpp@@@itpp@@QEAAXAEBV?$Vec@V?$complex@N@std@@@2@AEAV32@@Z)
2>transforms.obj : error LNK2019: unresolved external symbol MKL_Domain_Set_Num_Threads referenced in function "void __cdecl itpp::init_fft_library<2>(void)" (??$init_fft_library@$01
These symbols are declared in <mkl_dfti.h> and <mkl_service.h> header files, but they are not defined in any mkl library (I am linking with
mkl_cdft_core_dll.lib
mkl_core_dll.lib
mkl_intel_thread_dll.lib
)
thanks
Bogdan
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have solved my problem by only linking to mkl_rt.lib
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
the problem can be solved by linking as an example with the following lib's:
mkl_intel_c_dll.lib mkl_intel_thread_dll.lib mkl_core_dll.lib
see the mkl linker adviser : http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I doesn't answer to my question as I am trying to use FFT libraries. Anyway, I have already used these libraries and still I get the error above. Why mkl_rt.lib is provided ? Are there any drawnbacks ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have looked only in mkl_cdft_core.dll but DftiComputeForward does not exist, but instead there is DftiComputeForwardDM. Also, I have used for linking mkl_cdft_core_dll.lib, but I still get errors. On the other hand, DftiComputeForward does exist in mkl_rt.dll
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Bogdan,
DftiSomethingDM functions relate to cluster FFT (DM stands for Distributed Memory). Probably you want to use 'normal' FFT, that is FFT on a single computer, not using MPI. The normal functions are declared in mkl_dfti.h, and provided by mkl_intel_c.dll. Please follow the advice by Gennady.
Thanks
Dima
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The only way I have found is to use mkl_rt.dll. mkl_intel_c.dll does not exist in MKL 11
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page