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

MKL10 slower, due to bug in choice of number of threads

grant8
Beginner
405 Views

F.Y.I:

If you don't specify a number of threads for MKL to use, then (beginning with v10) MKL will try to choose a number for you. But it gets it wrong when hyperthreading technology (HTT) is enabled. It will choose twice as many threads as you should have, and this can cause slowdown of an app rigged to MKL10, compared to its speed under MKL9.1.

If you only run your app on one machine, and you know whether HTT is enabled on that machine, then you can work around this by disabling HTT in the BIOS settings, or setting the number of threads manually using environment variables, so that MKL default number-of-thread choice won't be enacted.

However, if you deploy your app widely to clients running on various hardware configurations, then you have a bit of a mess on your hands. If you want to correctly choose, at runtime,the best number of threads for the machine your app is running on, then you must programmatically detect whether HTT is enabled, and with that knowledge, prevent MKL10 default-thread-number-choosing logic from being applied.

The workaround, Detecting whether HTT is enabled is not for the faint-hearted, and involves a number of steps involving queries tothe CPUandchunks of assembly language. See for example: http://cache-www.intel.com/cd/00/00/27/66/276611_276611.txt

MKL management has decided that it is not worthwhile to fix this bug (reported during v10 beta), citing "one of the reasons is that MKL has long recommended that HT be turned off since MKL 7.x version".

What does anyone else think? No problem?

0 Kudos
1 Reply
Todd_R_Intel
Employee
405 Views

The MKL team has investigated your issue and believes it can provide a solution in an upcoming release. It's my hope that it will work for you.

Todd

0 Kudos
Reply