- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all!
I get a segmentation fault when compiling with -openmp -ftrapuv
[fortran]program foo_p
integer, parameter :: wp=kind(1.0D0)
integer, parameter :: nst=1
integer, parameter :: np=700000
type foo_t
real(kind=wp), dimension(np) :: bar
end type foo_t
type(foo_t) :: a, b
integer :: ist, ip
!$omp parallel do private(ip)
do ist = 1, nst
!a%bar=a%bar+b%bar
!a%bar(1:np)=a%bar(1:np)+b%bar(1:np)
forall(ip=1:np)a%bar(ip)=a%bar(ip)+b%bar(ip)
end do
!$omp end parallel do
stop
end program foo_p
[/fortran] Removing the !$OMP directives or changing the forall to a do loop makes the error go away.The parameter np is a magical number for lower values it crashes less often or not at all. (doneulimit -s unlimited)
The array syntax works in this example but in more convoluted cases the "a%bar(1:np)=..." also crashes.
I have some doubts about the private clause there:
[bash]!$omp parallel do private(j) do i=1,n !... forall(j=1:m)... [/bash]
Because I would think that j is more like a placeholder than a variable. But it does not seem to have any effect.
Any advice?
Thank you very much.
Best regards,
Jos Rui
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all!
I think I have found a solution:
Setting theOMP_STACKSIZE environment variable...
Sure is easy know it... ;-)
Sorry for the mess up.
Best regards,
Jos Rui
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