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

MKL 2021 Changes the format of INTEL_MKL_VERSION in mkl_version.h

John_Young
New Contributor I
2,054 Views

Is there any reason that MKL 2021 changed the format of the INTEL_MKL_VERSION in mkl_version.h.  Prior to 2021 Update 1, the INTEL_MKL_VERSION was

__INTEL_MKL__*10000+__INTEL_MKL_MINOR__*100+__INTEL__MKL_UPDATE__

In 2021 it looks like it was was changed to

__INTEL_MKL__*100+__INTEL_MKL_MINOR__*10+__INTEL__MKL_UPDATE__

This breaks all of our build scripts that try to workaround various changes/issues s in MKL versions. 

Can this be changed back to the original version scheme so that pre-processors don't get confused about what version is being used? 

Thanks,

John

0 Kudos
7 Replies
mecej4
Honored Contributor III
2,033 Views

This change was not made recently. Did you not update your MKL installation for a long period? For instance, with Parallel Studio XE 2016, in file mkl_version.h I already see

#define INTEL_MKL_VERSION 110304

For your specific purpose, you could simply put in whatever string you wish in your mkl_version.h, instead of asking Intel to undo changes put in place several years ago. Other users who have already adopted to the shortened string will probably object if the old, longer, string was brought back again.

0 Kudos
John_Young
New Contributor I
2,021 Views

Hi mecej4,

I believe you are misinterpreting the behavior.  Back in MKL version 11 and before, the version number was multiplied by 10000 just like now.  However, the versions were two-digit numbers such as 11 instead of four digit numbers such as 20XX like we have now.  Also, the minor version even back in version 11 was still multiplied by 100 and not 10 like in MKL 2021.  So I maintain the version string behavior did change in 2021. 

We have been pre-processing MKL_VERSION since around 2012/2013.  Note that mkl_version.h was added to MKL (I think starting in version 10.3) at my request back in ~2011, so I'm fairly sure the longer version string behavior has (mostly been) consistent until 2021. See our original request for mkl_version.h in this thread

https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Determingine-MKL-version-number-during-compile/m-p/804481#M3330

I only have two windows installations currently:

For MKL 2019.0.5 the version string is 20190005.

For MKL 11.3.3 in Parallel Studio 2016.3.059,  I do see what seems to be shortened version string of 110303,  but it really is not.  Note that the version is still being multiplied by 10000, the minor version by 100.  It is only that back in version 11, the version was 11 and not 20XX, so when multiplying by 10000, the string is shorter.

Below is what I see for our available linux installations.  Its is only in Intel 2021 that the version string was shortened.  So, I'm not sure why you see a shortened version string for your earlier MKL version.

Intel 2018.0.3

#define INTEL_MKL_VERSION 20180003

Intel 2019.0.3

#define INTEL_MKL_VERSION 20190003

Intel 2019.0.4

#define INTEL_MKL_VERSION 20190004

Intel 2020.0.4

#define INTEL_MKL_VERSION 20200004

Intel 2021.0.1

#define INTEL_MKL_VERSION 202101

0 Kudos
mecej4
Honored Contributor III
2,009 Views

Ah, I see now. In the latest release, the minor and update numbers are being represented by single digits, whereas in the past there used to be a leading zero prefixed to values that are <= 9.

0 Kudos
PrasanthD_intel
Moderator
1,991 Views

Hi John,


We are transferring this query to the concerned team who can better answer regarding the shift in Version numbers.


Regards

Prasanth


0 Kudos
Gennady_F_Intel
Moderator
1,980 Views

Thanks for report. This is the bug. We will fix them and keep this thread inform when the fix will be available.


0 Kudos
Gennady_F_Intel
Moderator
1,587 Views

the fix of the issue has been introduced in oneMKL 2021.2

here is the snapshot from mkl_version.h


#define __INTEL_MKL_BUILD_DATE 20210312


#define __INTEL_MKL__     2021

#define __INTEL_MKL_MINOR__  0

#define __INTEL_MKL_UPDATE__  2


#define INTEL_MKL_VERSION   20210002


>>>>>>>

Here how we compute the full version by following the format:

INTEL_MKL_VERSION = (__INTEL_MKL__*100+__INTEL_MKL_MINOR__)*100+__INTEL_MKL_UPDATE__



0 Kudos
Gennady_F_Intel
Moderator
1,586 Views

The issue is closing and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only.



0 Kudos
Reply