Dear developers of OPENMPI,

I am running a small downsized Fortran-testprogram for shared memory allocation 
(using MPI_WIN_ALLOCATE_SHARED and  MPI_WIN_SHARED_QUERY) )
on only 1 node   of 2 different Linux-clusters with OPENMPI-1.8.3 and 
Intel-14.0.4 /Intel-13.0.1, respectively.

The program simply allocates a sequence of shared data windows, each consisting 
of 1 integer*4-array.
None of the windows is freed, so the amount of allocated data  in shared 
windows raises during the course of the execution.

That worked well on the 1st cluster (Laki, having 8 procs per node))  when 
allocating even 1000 shared windows each having 50000 integer*4 array elements,
i.e. a total of  200 MBytes.
On the 2nd cluster (Cluster5, having 24 procs per node) it also worked on the 
login node, but it did NOT work on a compute node.
In that error case, there occurs something like an internal storage limit of ~ 
140 MB for the total storage allocated in all shared windows.
When that limit is reached, all later shared memory allocations fail (but 
silently).
So the first attempt to use such a bad shared data window results in a bus 
error due to the bad storage address encountered.

That strange behavior could be observed in the small testprogram but also with 
my large Fortran CFD-code.
If the error occurs, then it occurs with both codes, and both at a storage 
limit of  ~140 MB.
I found that this storage limit depends only weakly on  the number of processes 
(for np=2,4,8,16,24  it is: 144.4 , 144.0, 141.0, 137.0, 132.2 MB)

Note that the shared memory storage available on both clusters was very large 
(many GB of free memory).

Here is the error message when running with np=2 and an  array dimension of 
idim_1=50000  for the integer*4 array allocated per shared window
on the compute node of Cluster5:
In that case, the error occurred at the 723-th shared window, which is the 1st 
badly allocated window in that case:
(722 successfully allocated shared windows * 50000 array elements * 4 Bytes/el. 
= 144.4 MB)


[1,0]<stdout>: ========on nodemaster: iwin=         722 :
[1,0]<stdout>:  total storage [MByte] alloc. in shared windows so far:   
144.400000000000
[1,0]<stdout>: =========== allocation of shared window no. iwin=         723
[1,0]<stdout>:  starting now with idim_1=       50000
[1,0]<stdout>: ========on nodemaster for iwin=         723 : before writing on 
shared mem
[1,0]<stderr>:[r5i5n13:12597] *** Process received signal ***
[1,0]<stderr>:[r5i5n13:12597] Signal: Bus error (7)
[1,0]<stderr>:[r5i5n13:12597] Signal code: Non-existant physical address (2)
[1,0]<stderr>:[r5i5n13:12597] Failing at address: 0x7fffe08da000
[1,0]<stderr>:[r5i5n13:12597] [ 0] 
[1,0]<stderr>:/lib64/libpthread.so.0(+0xf800)[0x7ffff6d67800]
[1,0]<stderr>:[r5i5n13:12597] [ 1] ./a.out[0x408a8b]
[1,0]<stderr>:[r5i5n13:12597] [ 2] ./a.out[0x40800c]
[1,0]<stderr>:[r5i5n13:12597] [ 3] 
[1,0]<stderr>:/lib64/libc.so.6(__libc_start_main+0xe6)[0x7ffff69fec36]
[1,0]<stderr>:[r5i5n13:12597] [ 4] [1,0]<stderr>:./a.out[0x407f09]
[1,0]<stderr>:[r5i5n13:12597] *** End of error message ***
[1,1]<stderr>:forrtl: error (78): process killed (SIGTERM)
[1,1]<stderr>:Image              PC                Routine            Line      
  Source
[1,1]<stderr>:libopen-pal.so.6   00007FFFF4B74580  Unknown               
Unknown  Unknown
[1,1]<stderr>:libmpi.so.1        00007FFFF7267F3E  Unknown               
Unknown  Unknown
[1,1]<stderr>:libmpi.so.1        00007FFFF733B555  Unknown               
Unknown  Unknown
[1,1]<stderr>:libmpi.so.1        00007FFFF727DFFD  Unknown               
Unknown  Unknown
[1,1]<stderr>:libmpi_mpifh.so.2  00007FFFF779BA03  Unknown               
Unknown  Unknown
[1,1]<stderr>:a.out              0000000000408D15  Unknown               
Unknown  Unknown
[1,1]<stderr>:a.out              000000000040800C  Unknown               
Unknown  Unknown
[1,1]<stderr>:libc.so.6          00007FFFF69FEC36  Unknown               
Unknown  Unknown
[1,1]<stderr>:a.out              0000000000407F09  Unknown               
Unknown  Unknown
--------------------------------------------------------------------------
mpiexec noticed that process rank 0 with PID 12597 on node r5i5n13 exited on 
signal 7 (Bus error).
--------------------------------------------------------------------------


The small Ftn-testprogram was built by
  mpif90 sharedmemtest.f90
  mpiexec -np 2 -bind-to core -tag-output ./a.out

Why does it work on the Laki  (both on login-node and on a compute node)  as 
well as on the login-node of Cluster5,
but fails on an compute node of Cluster5?

Greetings
   Michael Rachner



Reply via email to