Vassilios
You cannot synchronize in local mode. Different processes may execute local-mode functions different number of times, which would lead to a deadlock. For example, if process 0 holds 1 large component, while process 1 holds 2 smaller components, then process 0 would synchronize once, while process 1 would synchronize twice. Since synchronization is a global operation for which all processes need to participate, this would fail.
Also -- what should it mean for a process to synchronize in this case? Synchronization fills ghost points with valid data from other components. If a process holds 2 components, and you synchronize after calculating the first component, then it is not possible to obtain valid data for points from the second component, since this component has not been calculated yet.
Synchronization in local mode works in certain very restricted cases to ensure backward compatibility with PUGH. I believe it works if each process holds exactly 1 component.
-erik