Illegal instruction Intel® Core™2 Duo CPU E8400

Submit New Article

March 2, 2010 10:30 AM PST



Reference Number: DPD200090099


Version: Intel® MKL 10.2 ( all updates 1,..4)


Operating Systems: Windows (64 bit) and Linux (64 bit)


Problem Description :
If the program contains calls to any function from the VML library (for example vdSub (n, a, b, y) which performs element by element subtraction of vector b from vector a) and it runs on Intel® Core™2 Duo CPU E8400 or Intel® Core™2 Duo T9600

the program causes signal SIGILL, Illegal instruction.
0x0000000000405406 in mkl_vml_core_e9_vml_dSub ()
bt:
#0 0x0000000000405406 in mkl_vml_core_e9_vml_dSub ()
#1 0x00000000004028e3 in vdSub ()
#2 0x00007fffffffde90 in ?? ()
#3 0x00007fffffffde90 in ?? ()
#4 0x00007fffffffded0 in ?? ()
#5 0x00007fffffffdfb0 in ?? ()
#6 0x0000000000000000 in ?? ()

The cause of the problem is incorrect behavior of CPU dispatcher which passes the control to AVX code on systems that don’t support AVX instructions

Workaround:
A temporal workaround: call mkl_enable_instructions(MKL_SINGLE_PATH_ENABLE) before first call to any MKL/VML function. It will force to run "default" versions of MKL/VML functions.
No illegal instruction will occur and code will work correctly but the performance will suffer.


Resolution Status :
The fix of the problem is available in the MKL 10.2 Update 5 and later versions.



[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]


Do you need more help?


This article applies to: Intel® C++ Compiler for Linux* Knowledge Base,   Intel® C++ Compiler for Windows* Knowledge Base,   Intel® Cluster Toolkit for Linux* Knowledge Base,   Intel® Cluster Toolkit for Windows* Knowledge Base,   Intel® Fortran Compiler for Linux* Knowledge Base,   Intel® Fortran Compiler for Mac OS X* Knowledge Base,   Intel® Math Kernel Library Knowledge Base