Community
cancel
Showing results for 
Search instead for 
Did you mean: 
96 Views

VDEXP undefined on windows for mkl 2017 update 2

I have following compiling error using mkl 2017 update 2 on windows (It only happens on windows; it's ok on linux)

.error: identifier "VDEXP" is undefined
      VDEXP(&size, &x[0], &expx[0]);

 

0 Kudos
11 Replies
Jing_X_Intel
Employee
96 Views

How do you build the program?

Would you like to use https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor to check whether it solves your problem or not?

96 Views

Yes, I've used the linker advisor. By the way, we've been using mkl all along. This compiling error only occurs with 2017 update 2 on windows.

Gennady_F_Intel
Moderator
96 Views

Sam, that's strange : I see this API is declared into mkl_vml_functions.h as well as in 32 & 64 bit libraries.  MKL 2017 u2, windows.

/* Exponential function: r = e^a */
..............
_MKL_API(void,VDEXP,(const MKL_INT *n, const double a[], double r[]))

 

96 Views

It could be our compiler issue. We recently upgraded our intel compiler.

96 Views

No, it is not compiler issue. I got the same compiling error using previous compiler.

Gennady_F_Intel
Moderator
96 Views

well, I use vdexp.c example from <mklroot>\example\vmlc.

compiler - icl, v 2017  or cl - version 18.00

the code is compiled and executed as expected. MKL v.2017 u2. 


        cl /w /MT /I"C:\APPS\Intel2017\compilers_and_libraries\windows\mkl\include" /Fevdexp.exe exe vdexp.c   "C:\APPS\Intel2017\compilers_and_libraries\w
indows\mkl\lib\intel64\mkl_intel_lp64.lib" "C:\APPS\Intel2017\compilers_and_libraries\windows\mkl\lib\intel64\mkl_intel_thread.lib" "C:\APPS\Intel2017
\compilers_and_libraries\windows\mkl\lib\intel64\mkl_core.lib" "C:\APPS\Intel2017\compilers_and_libraries\windows\compiler\lib\intel64\libiomp5md.lib"

Microsoft (R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

vdexp.c
Microsoft (R) Incremental Linker Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:vdexp.exe
vdexp.obj
C:\APPS\Intel2017\compilers_and_libraries\windows\mkl\lib\intel64\mkl_intel_lp64.lib
C:\APPS\Intel2017\compilers_and_libraries\windows\mkl\lib\intel64\mkl_intel_thread.lib
C:\APPS\Intel2017\compilers_and_libraries\windows\mkl\lib\intel64\mkl_core.lib
C:\APPS\Intel2017\compilers_and_libraries\windows\compiler\lib\intel64\libiomp5md.lib

vdexp.exe
vdExp test/example program

           Argument                     vdExp
===============================================================================
       -17.00000000000000     4.13993771878517e-008
       -13.11110000000000     2.02265409612790e-006
        -9.22220000000000     9.88210420175957e-005
        -5.33330000000000     4.82811092818012e-003
        -1.44440000000000     2.35887566644579e-001
         2.44440000000000     1.15236333441634e+001
         6.33330000000000     5.63011469474181e+002
        10.22220000000000     2.75071156199207e+004
        14.11110000000000     1.34391828719643e+006
        18.00000000000000     6.56599691373305e+007

Relative accuracy is 0.0000000000000000

 

 

96 Views

I still have this compiler error using intel 17.2 c/c++ compiler + mkl 2017.2. Any help is appreciated. Thanks.

Gennady_F_Intel
Moderator
96 Views

Do you mean - ."error: identifier "VDEXP" is undefined"?  
You may check if this symbol exist in libs (mkl_core.lib or mkl_rt.lib) you linked with this case and therefore the problem with the wrong linking line or etc

 

96 Views

It is a compiler error. I have no problem using intel 16.3 c/c++ + mkl 2017.2. It seems we miss some flag of intel 17.2 or naming convention for calling fortran may have been changed for intel 17.2.

mecej4
Black Belt
96 Views

I think that a compiler error message has been mistaken to be a linker error message in what has been said in this thread. The message "error: identifier "VDEXP" is undefined" is from the compiler, which is complaining that there is no prototype for the external function VDEXP. You should probably add #include <mkl_vml.h> in your C source file to take care of this.

Jingwei_Z_Intel
Employee
96 Views

The correct name to use in C is vdExp.

vdexp and VDEXP are intended to be used for FORTRAN. If you want to use them in C, please add underscore at the end (vdexp_ and VDEXP_) and pass all parameters as reference.

Thanks,

Jingwei

Reply