[mpiwg-rma] Short question on the ccNUMA memory reality

Rolf Rabenseifner rabenseifner at hlrs.de
Tue Aug 5 02:33:19 CDT 2014


Dear expert on ccNUMA,

three questions, which hopefully may be trivial:

1. Question (sequential consistency on one location):
------------

Do I understand correctly that in the following patter
on a shared Memory or a ccNUM shared memory

rank 0     rank 1
           print x
x=val_1    print x
x=val_2    print x
           print x

the print statements can print only in the following
sequence 
 - some times the previous value
 - some times val_1
 - and after some time val_2 and it then stays to print val_2

and that it can never be that a sequence with val_2 before val_1 
can be produced, i.e.,
  old_val
  val_2
  val_1
  val_2
is impossible.

Also other values are impossible, e.g., some bit or byte-mix
from val_1 and val_2.

2. Question:
-----------
What is the largest size that the memory operations are atomic,
i.e., that we do not see a bit or byte-mix from val_1 and val_2?
Is it 1, 4, 8, 16 bytes or can it be a total struct that fits 
into a cacheline? 

3. Question (about two updates):
-----------
 
rank 0       rank 1
x=x_ld
y=yold
---- necessary synchronizations -----           
             print x (which shows xold)
             print y (which shows yold)
---- necessary synchronizations -----           
x=xnew    
y=ynew    
             print x
             print y
             after some time
             print x
             print y

Possible results are
 - xold,yold  xold,yold  xnew,ynew             
 - xold,yold  xnew,yold  xnew,ynew             
 - xold,yold  xold,ynew  xnew,ynew 
   i.e., the y=ynew can arrive at another process
         faster than the x=xnew, although the storing 
         process issues the stores in the sequence
         x=xnew, y=ynew.
 - xold,yold  xnew,ynew  xnew,ynew  

The assignments should represent the store instructions,
and not the source code (because the compiler may modify
sequence of instructions compared to the source code)              

Do I understand correctly, that the sequence of two 
store instructions two two different locations in one process 
may be visible at another process in a different sequence?

I ask all these questions to understand which memory model
can be defined for MPI shared memory windows.

Best regards
Rolf

-- 
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307)



More information about the mpiwg-rma mailing list