Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

openMP segfault

pt663359
Beginner
632 Views

Hi there,

I have a problem with openmp on ifc. In a cycle like:

!OMP$ do parallel private(i) & shared(x,iv,my_data)
do i=1,Nmax
x(i)=my_data(iv(i),..)*{some_opps}
......
enddo !i=1,Nmax
!OMP$ end do parallel

I am getting segvfault if I have more than 60,000 shared reals in !OMP parallel loop. (eg. matrix my_data has more than 60,000 real(8) elements). With 50,000 reals works fine, but with 60,000 crashes.

I use ifc 7.1 on dual Xeon 3.06/512K L2 cache, and ulimit stack=unlimited.

Anyone had similar problems? How can be worked out? (I need to share about 120,000 reals inside openMP loops). Thanks.

0 Kudos
3 Replies
pt663359
Beginner
632 Views
Hi there

In my last post I was a bit imprecise. So if I have inside the openmp loop:
$OMP do parallel () shared ()
$OMP end parallel

about 256000 real(8) numbers(matrix of (64000,4)) and 64000 integers, openmp stuff works fine (and fast). If I increaze the size of real matrix to (65000,4) it crashes.

Anone knows if can be possible to use 4 times as much data as above(about 10^6 - 2*10^6 real(8)) inside the openmp loops?.

Thanks.
0 Kudos
TimP
Honored Contributor III
632 Views
Those limits look about right for 32-bit linux. The easy way to increase them would be to move to one of the "64-bit" systems.
0 Kudos
pt663359
Beginner
632 Views
Dear Sir,

I have solved that issue and at this point I actually can use more than 250,000 real(8) with OpenMP on 32bit CPUs.

Your answer was therefore not only completely wrong, but also non-profesional. have you actually read my question before answering that 250,000 real(8) are the limit on 32bit CPU?

Thanks anyway, and try better next time!
0 Kudos
Reply