I am trying to build a Windows DLL that contains code that does offload to MIC. I managed to compile the DLL, but it failed (and I see that in my output directory a file called <dll-name>MIC.out has not been created).
Tools: windows sever 2012R2 , visual studio 2012, Intel Parallel Studio 2015 .
I create two projects: one is a DLL project inculding a function ,another is a main function which call the DLL.
DLL project: (demodll)
Export.h : extern "C" __declspec(dllexport) double decode_process(int n);
__declspec(dllexport) double decode_process(int n)
double sum = 0.0;
#pragma offload target(mic) inout(sum)
for (int i = 0; i < n;i++)
for (int j = 0; j < n; j++)
sum += i*j;
Main function (Demo):
using namespace std;
When I Compile the demodll , errors occured.:
5 error #10340:problem encountered when performing target compliation
3 error #1292: *MIC* unknown attribute "dllexport" Export.cpp
It means the Intel C++ compiler cannot recognize the "dllexport" on MIC , but if I comment out the words : #pragma offload target(mic) inout(sum), it succded
and the whole solution works correctly, which means the Intel compiler can recognize the "dllexport" on CPU.
Can anyone please advice me on what I can do that the Intel compiler recognize the "dllexport" on MIC ?
I am basically having the same kind of problems, trying to build a DLL with offload code in VS2013.
It looks to me that the problem is that since MIC is linux-based, it does not recognize Windows specific stuff (dllexport, or in my case, it does not open source file "windows.h")
All I have found this notice
Saying that using older versions of Intel compiler , you need to handle .DLL and .so libraries separately.
Is there any tutorial or walkthrough to create a DLL using offload code? Or how to use .dll and .so libraries separately?