- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have run into a problem with a fortran code when calling scalapack routine PCLAPRNT. As soon as this subroutine is called the code will die on a seg fault. If I use a hand built scalapack and blacs (using source from netlib.org) library with the same code then it will run correctly. It only seg faults when I link the MKL scalapack.
My machine is Linux running RH5 and I trie several flavors of MKL 10.2 including 10.2.6.038. I also use MKL for the blacs and blas. The compiler is ifort 11.1 and the mpi library I am using is a hand-compiler ifort based openmpi v1.2.4.
A code that demonstrates this can be downloaded from http://www.netlib.org/scalapack/examples/sample_pcheevx_call.f
here is a copy of my makefile:
EXE = sample_pcheevx.intel.mkl
F90 = mpif90
MKL_HOME = /usr/global/intel/mkl/10.2.6.038/lib/em64t
SCALAPACKLIB = -lmkl_scalapack_lp64
LIBBLACS = -lmkl_blacs_openmpi_lp64
BLASLIB = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
F90FLAGS = -O3
LDFLAGS = -L$(MKL_HOME) $(SCALAPACKLIB) $(LIBBLACS) $(BLASLIB) -Wl,-R$(MKL_HOME)
$EXE:sample_pcheevx.f
$(F90) sample_pcheevx.f -o $(EXE) $(F90FLAGS) $(LDFLAGS)
clean:
/bin/rm *.o $(EXE)
any advice appreciaed.
thanks,
--Jeff
My machine is Linux running RH5 and I trie several flavors of MKL 10.2 including 10.2.6.038. I also use MKL for the blacs and blas. The compiler is ifort 11.1 and the mpi library I am using is a hand-compiler ifort based openmpi v1.2.4.
A code that demonstrates this can be downloaded from http://www.netlib.org/scalapack/examples/sample_pcheevx_call.f
here is a copy of my makefile:
EXE = sample_pcheevx.intel.mkl
F90 = mpif90
MKL_HOME = /usr/global/intel/mkl/10.2.6.038/lib/em64t
SCALAPACKLIB = -lmkl_scalapack_lp64
LIBBLACS = -lmkl_blacs_openmpi_lp64
BLASLIB = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
F90FLAGS = -O3
LDFLAGS = -L$(MKL_HOME) $(SCALAPACKLIB) $(LIBBLACS) $(BLASLIB) -Wl,-R$(MKL_HOME)
$EXE:sample_pcheevx.f
$(F90) sample_pcheevx.f -o $(EXE) $(F90FLAGS) $(LDFLAGS)
clean:
/bin/rm *.o $(EXE)
any advice appreciaed.
thanks,
--Jeff
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I could not reproduce your error, but that is understandable because you are using a number of custom-built components.
The example uses a couple of big arrays which are allocated on the stack. That could cause problems. You may try reducing LWORK and LRWORK to, say, 10000; you could make sure that you have raised the stack limit adequately; you could use the -heap-arrays compiler option; you could declare some/all of RWORK, WORK, A, Z with the SAVE attribute.
If none of these suggestions work, you may need to replace your custom-built libraries one at a time by a standard version and try running.
The example uses a couple of big arrays which are allocated on the stack. That could cause problems. You may try reducing LWORK and LRWORK to, say, 10000; you could make sure that you have raised the stack limit adequately; you could use the -heap-arrays compiler option; you could declare some/all of RWORK, WORK, A, Z with the SAVE attribute.
If none of these suggestions work, you may need to replace your custom-built libraries one at a time by a standard version and try running.
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