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

tracking NaN problem


Following suggesion of user Annalee (Intel)

in her reply: "The NAN may occur within the zheevr calculations but not cause the final result to NAN. Alternatively, flush to zero may result in a NAN that does not otherwise occur. If your question is specific to MKL, I would suggest posting on the MKL forum as well."

I would like ask about details of the feature above. Is it possible to skip catching NaN in zheevr exceptions with -fpe0 using fotran compiler and track NaNs only in the remaining code? So far I am not able to track a real source of NaN in my program due to artificial NaNs detected inside a zheevr and happening before true source of NaN is located. (input and output contains no NaN, also stat variable is set to 0 after evaluation of zheevr. Ouput was checked, when I  recompiled my program without -fpe0 flag).

I have recompiled file containing the call to zheevr withouf -fpe0 flag and linked it this way to my program, but this did not really help: It seem that NaN trapping is unable to locate a particular line which throws NaN, but it is able to locate the envelopping routine that contains zheevr. I have reducer the "resolution" of tracking, but the triggering factor is still zheevr.

0 Kudos
1 Reply
Hi, MKL doesn't perform any exceptions handling, it inherits setting from callee program. Your module compiled with -fpe0 mostlikely(if doesn't explicitly overrides it) also inherits setting of the application which already set exceptions handling policy. I would suggets you to try:
  • Disable exception handling in your whole program, this will allow analisys of results
  • Try the functionality from NETLIB LAPACK where it is provided in source form (Fortran). It should behave same way as MKL does and you will be able to dig into exact operations where exception happens. zheevr + dependencies could be downloaded here.
W.B.R., Alexander
0 Kudos