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
In 2021 it looks like it was was changed to
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?
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.
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
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.
#define INTEL_MKL_VERSION 20180003
#define INTEL_MKL_VERSION 20190003
#define INTEL_MKL_VERSION 20190004
#define INTEL_MKL_VERSION 20200004
#define INTEL_MKL_VERSION 202101
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.
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__
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.