- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The DLL version of MKL 7.2.1 for IA-32 systems crashes when it runs on a pre-Pentium-III system. This is because the initial startup code for the MKL_C_DLL.LIB library contains an SSE instruction, which executes before the CPU type has even been detected and a CPU-specific library selected.
If you haven't tested your MKL-linked application on an older system you should probably check it before you ship.
The STMXCSR instruction occurs55 bytes from the start of __MKL_serv_load_dll in MKL_C_DLL.LIB. Looking at the surrounding assembly code makes the trouble clear:
Code:
6593E0A9 push edi 6593E0AA mov dword ptr [esp],0 6593E0B1 call _mkl_cfg_file (6593D35Ah) 6593E0B6 pop ecx 6593E0B7 stmxcsr dword ptr [ebp-10h] 6593E0BB wait 6593E0BC fnstcw word ptr [ebp-0Ch] 6593E0BF call __MKL_SERV_cpu_detect (65940124h)
Note that the SSE instruction occurs before the call to cpu_detect, so this is obviously wrong.
I hope a patch will be forthcoming soon, otherwise we'll have to regress to a previous version of MKL. We can't insist on a P3 for everyone.
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
David,
This problem arose as a result of our solvging a different problem, namely, controlling the rounding mode in the DLLs. We did not differentiate between pre-Pentium III and later processors. Consequently we tried to access a FP status register that does not exist on these earlier processors. We have no pre-Pentium III processors in our validation processor suite currently.
Here is what we plan to do to resolve this for you:
1. We will notify you via this forum within the next few days when we will have a new DLL. We are in the midst of releasing MKL 8.0 beta which is tying up a lot of our resources at the moment, but we do want to resolve this quickly.
2. We will ask you to submit an issue via http://premier.intel.com and will supply the updated DLL via this medium.
3. Other customers who also may be using MS DLLs and run on non-SSE hardware will also be able to get an update by this method.
I hope this resolution is satisfactory to you.
Best regards -- Bruce
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Bruce. The Premier Service issue number is 302920.
I hope you can get a patch for the mkl_c_dll.lib static library out to us. I'll be looking forward to it. It would be great to not have to regress to an earlier version of MKL.
Unfortunately all the world has not yet upgraded to SSE-capable Intel processors. (If you don't have pre-P3 test machines, though, how do you test the that "mkl_def.dll" dynamic library?)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
David,
I understand that there are still some PentiumII and maybe even Pentium or Pentium Pro processors out there still although it is hard to imagine. Having said that, my desktop system has an old Celeron processor but I never run it so perhaps that does not count.
We do have non-SSE machines in our development group but not in the validation group, which is a service provided to MKL. I think this rather innocuous change in the code and the consequences of it will make us look at the validation requirements anew.
Bruce
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In an earlier posting I indicated that we would notify through this forum when we had new dlls that would not cause failure on pre-Pentium III processors. That code is now available and anyone who has need of this code can obtain it through http://premier.intel.com.
Bruce

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page