Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

VDEXP undefined on windows for mkl 2017 update 2

xian-zhong_guous_cd-
234 Views

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_Xu
Employee
234 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?

xian-zhong_guous_cd-
234 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
234 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[]))

 

xian-zhong_guous_cd-
234 Views

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

xian-zhong_guous_cd-
234 Views

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

Gennady_F_Intel
Moderator
234 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

 

 

xian-zhong_guous_cd-
234 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
234 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

 

xian-zhong_guous_cd-
234 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
234 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
234 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