Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

DGEMM with pgithread is giving segmentation fault

Piyush_S_2
Beginner
991 Views

Hello, 

My code uses multithreaded MKL dgemm. I use following to link the code 

-L$(MKL_LIBDIR) -lmkl_intel_lp64 -lmkl_pgi_thread -lmkl_core -L/usr/common/usg/intel/lib/intel64 -lpthread -lm -pgf90libs

The code for some reasons give segmentation at some calls to DGEMM. I ran gdb this is output of backtrace


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x43c08940 (LWP 30503)]
0x00002aaaf7ee7df5 in mkl_blas_mc3_dgemm_copyan ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_mc3.so
(gdb) bt
#0 0x00002aaaf7ee7df5 in mkl_blas_mc3_dgemm_copyan ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_mc3.so
#1 0x00002aaaab4ccef2 in mkl_blas_dgemm_2d_acopy_n ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_pgi_thread.so
#2 0x00002aaaab4c9a75 in gemm_host ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_pgi_thread.so
#3 0x00002aaaab4c8951 in mkl_blas_dgemm ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_pgi_thread.so
#4 0x00002aaaaada7799 in dgemm_ ()
from /usr/common/usg/intel/13.0.028/composer_xe_2013.1.117/mkl/lib/intel64/libmkl_intel_lp64.so
#5 0x000000000045c6ef in my_dgemm_ (a=0x519863 "N", b=0x519863 "N", c=0x7fffffffad64,
d=0x7fffffffad48, e=0x7fffffffad98, f=0x7fffffffaeb0, g=0x59b5fd0, h=0x7fffffffad40,
i=0x2aaaf6db5010, j=0x7fffffffad98, k=0x7fffffffaea8, l=0x2aaac72c4010, m=0x7fffffffad64, n=1,
o=1) at ./pdgstrf.c:165

I ran this code on dual socket xeon 5550 2.67GHz system. The code doesn't give segfault until  MKL_NUM_THREADS is set to 1, 2, 3, ..7, but for 8 it does.  

 

0 Kudos
6 Replies
TimP
Honored Contributor III
991 Views

You may be hitting stack limit, if you didn't set

ulimit -s unlimited  #bash et al

limit stacksize unlimited #tcsh et al

0 Kudos
Piyush_S_2
Beginner
991 Views

It doesn't work :( . Following is the output for command limit 

cputime unlimited
filesize unlimited
datasize unlimited
stacksize unlimited
coredumpsize 0 kbytes
memoryuse unlimited
vmemoryuse 41943040 kbytes
descriptors 8960
memorylocked unlimited
maxproc 409600

I would also like ot mention that, when linking if I use intel_thread it works alright, i.e. instead of above linking, I link mkl as follows

BLASLIB = -L$(MKL_LIBDIR) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -L/usr/common/usg/intel/lib/intel64 -liomp5 -lpthread -lm

The segmentation fault doesn't occur. I intend to use openmp (with pg c compiler and MKL multithreaded)  hence, even though this option works I can't use it  

0 Kudos
Gennady_F_Intel
Moderator
991 Views

please give us the standalone example of this case.

0 Kudos
Piyush_S_2
Beginner
991 Views

 I'm attaching this example which also gives segementation fault when MKL_NUM_THREAD is set to 8 (otherwise it works fine).  

0 Kudos
Gennady_F_Intel
Moderator
991 Views

ok, there are pgi compiler avalable right now - what version of this compiler do you use?

0 Kudos
Piyush_S_2
Beginner
991 Views

I use pgcc 12.9-0 64-bit (on linux)

0 Kudos
Reply