I keep getting segmentation faults within mkl_dcoomv() function from MKL invoked in a native mode program on Xeon Phi (KNC). The code works well on the host (Haswell) as well as with the CSR strorage format (mkl_dcsrmv()) instead of COO. So, the problem happens only with the combination of COO an MIC.
In a debugger, I got the following error message:
Catchpoint -1 (signal SIGSEGV), 0x00007ffff514cc8a in mkl_spblas_lp64_dcoo0ng__c__mvout_mic () from /apps/all/imkl/2017.0.098-iimpi-2017.00-GCC-5.4.0-2.26/mkl/lib/mic/libmkl_intel_thread.so
The MKL and compiler versions are both 2017.
The code can be found here.
Any hints?
Link Copied
Can you please provide the command line used for compiling and linking the code for KNC?
Thanks.
There's a Makefile in the referenced project as well:
https://github.com/DanielLangr/abhsf/blob/master/spmv/unified/Makefile
It may be an issue of conflicting or incompatible OpenMP library. Make sure you link with the same OpenMP lib that comes with the icc compiler.
I believe I use the same library. I even tried to copy the OpenMP library manually to a special folder. And I also tried to use older 2016 version of MKL and icc. All without succes. As I wrote, with the CSR format all works well.
For more complete information about compiler optimizations, see our Optimization Notice.