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

How to suppress Intel MKL warning in 2024.0?

LanceWesterhoff
1,609 Views

We recently upgraded to 2024.0 and we've found the following "chatter" is coming unbidden from MKL.

Yes, it's running on an old CPU. But it still seems to be running and producing results. Granted, there may be a performance penalty (which could impact whether we stick with this version or downgrade to an older MKL version that provides proper support). But my guess the performance hit for this particular calculation is small. And ultimately, it's more important that the software runs cleanly.

Is there a way to suppress this warning? (either programmatically or with an environment variable) We tried setting MKL_VERBOSE=0 but that did not work.

 

Intel MKL WARNING: Support of Intel(R) Supplemental Streaming SIMD Extensions 3 (Intel(R) SSSE3) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library will use Intel(R) Streaming SIMD 2 Extensions (Intel(R) SSE2) instructions instead.

 

Thank you for your time!

8 Replies
Gennady_F_Intel
Moderator
1,532 Views

Lance,

Would you try to use the following environment variable: set/export MKL_ENABLE_INSTRUCTIONS=SSE4_2

--Gennady

0 Kudos
LanceWesterhoff
943 Views

Hi Gennady-

Unfortunately, the problem is we don't know what machine our users may be using. So in this case, export MKL_ENABLE_INSTRUCTIONS=SSE4_2 may close it out. But on the next machine, we may need to set a different instruction set. There should be a way to silence this. Is there a way to set something akin to export MKL_ENABLE_INSTRUCTIONS=BEST_AVAILABLEOr is there an MKL function we can call that will tell us the best instruction set available which we use to setenv() to programmatically set at runtime?

Thank you for your time!

0 Kudos
Gagan
Beginner
938 Views

i'll save you the heartache lance: nothing works.

 

BEST_AVAILABLE is actually SSE4_2 for any intel i7 processors that are born before "sandy bridge", which is socket 2011. i.e. sockets 1154/1366 are SSE4_2.

 

in other words, SSE4_2 should close out the warning but it does not because the developers forgot to do some checking to verify APPUL's operating system would present this environment variable at link-time. this solution DOES work for linux, so the reason it fails in APPUL's operating system must be due to these idiosyncrasies.

 

i hope i'm wrong but i don't think there is any solution. i say: good. i personally can't wait to move back to windows, where "everything just works" like restoring an iPod Classic that has become impossible on 10.14-10.15. they refuse to fix and improve their operating system, opting to spend these dollars infusing pseudo-mobile "feels" into the UI.

 

long overdue!!

0 Kudos
LanceWesterhoff
927 Views

Unfortunately, when running on a very old Xeon E5440 (for example), we see a warning such the following (and no setting of MKL_ENABLE_INSTRUCTIONS [that I've found] gets past it): 

"Intel MKL WARNING: Support of Intel(R) Supplemental Streaming SIMD Extensions 3 (Intel(R) SSSE3) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library will use Intel(R) Streaming SIMD 2 Extensions (Intel(R) SSE2) instructions instead."

Regardless, we wouldn't want to set MKL_ENABLE_INSTRUCTIONS to the minimum MKL supports since presumably that would negatively impact performance on newer processors.

The real fix here is Intel should provide a way to silence this sort of chatter. It's one thing to provide information for debugging purposes. In this case though this just comes across as amateurish. And unfortunately we're stuck with it since some users use AMD processors which showed bugs with earlier MKL versions. 

0 Kudos
Gagan
Beginner
912 Views

lance, you want to know something amateurish? try running the feast eigensolver on 2022.1--it doesn't work, at least on mac. it had an error with the linear solver. i was playing with old versions over the weekend and it is astounding what was pushed out, but then you remember: mac users don't matter because they are a very small group of users. most people will use windows or linux.

 

it seems intel made some poor staffing decisions and our pal gennady has had, for the lack of a better term, a challenging time keeping MKL up to date. we love and appreciate you gennady!

 

now, back to linux or windows:

from what i understand, mkl_enable_instructions works fine on linux, see this github post referencing a post on the MKL forums.

 

in terms of setting it automatically, or to the highest possible ISA that is available, i believe that is MKL_ENABLE_INSTRUCTIONS. see the documentation here: https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-0/mkl-enable-instructions.html

 

by setting something like MKL_ENABLE_INSTRUCTIONS=AVX_512_E1 will not result in crashes, as the documentation says it does nothing for unsupported instructions. in other words, you shouldn't need to do this on anything other than older processors, so just run something like

 

FILE *CPUinfo = popen("/proc/cpuinfo","r");

char lineBuffer[1024];

char CPUstring[1024];

while(!fgets(linebuffer, sizeof(line), CPUInfo)) {

/* your favourite way to get the substring

strcasestr( whatever the string info for processors older than sandy bridge are )

set CPUstring to the relevant bits

*/


}

if( !strcmp(CPUString, oldprocessorID1) || ... || !strcnmp(CPUstring, oldprocessorIDN)  )

mkl_enable_instructions(MKL_ENABLE_SSE4_2);

 

 

and that should fix your problem. surely windows has something similar?

 

i forgot to mention that i did try the mkl_enable_instructions function manually (again ON MAC) and it too did nothing, so i guess it's not an issue with the environment variables in mac versus linux: it's something deeper. but IT SHOULD work for linux. i haven't heard of anyone on linux having this issue persist after following the environment variable approach.

 

0 Kudos
LanceWesterhoff
926 Views

Incidentally Gennady, to answer your question: I tried that and it didn't work on the old Xeon E5440.

0 Kudos
Gagan
Beginner
1,004 Views

hi gennady,

 

i'm unfortunately on mac (parallel_studio_xe_2020.2.899+ oneAPI 2023.2.0.49398_offline) and also encountered this error.

 

i wrote 

export MKL_ENABLE_INSTRUCTIONS=SSE4_2

 

and it did not help the situation.

 

is there something i'm missing?

0 Kudos
Gennady_F_Intel
Moderator
894 Views

This fix is applied to 2024 update 1 version of oneMKL for Lin&win OS only. The latest version of oneMKL which supports MAC OS is 2023.2

0 Kudos
Reply