uka.patch
Class PartitionedObjectSpace.Distribution

java.lang.Object
  extended byuka.patch.PartitionedObjectSpace.Distribution
All Implemented Interfaces:
java.io.Serializable
Enclosing class:
PartitionedObjectSpace

public class PartitionedObjectSpace.Distribution
extends java.lang.Object
implements java.io.Serializable

See Also:
Serialized Form

Field Summary
private  int BITS_PER_OBJECT
           
private  EnlargingBooleanArray2D copy
           
private  IntOpenHashSet modifiedIDs
           
private  int offsetActual
           
private  int offsetReadOnly
           
private  int offsetSpecified
           
private  EnlargingBooleanArray2D orig
           
private  int rank
           
private  int[] sharedCnt
          Counts the number of non-read-only objects that are shared between the local rank and each other rank.
private  IntOpenHashSet sharedIDs
          Set of indentifiers being shared among the current rank and other ranks.
private  int size
           
 
Constructor Summary
PartitionedObjectSpace.Distribution(int size, int rank)
           
 
Method Summary
private  void broadcast(PatchWriter[] writers, boolean[] enabled, int data)
           
 void checkConsistency(java.util.logging.Logger log)
           
private  void commitLocalModification(int id)
           
private  void commitLocalModifications()
           
 IntIterator getActiveRanks()
           
private  int getRefCnt(int id, int maxInterest)
           
 IntIterator getSharedIDs()
           
private  void initTransient()
           
 boolean isModified(int id)
           
 boolean isReferenced(int id)
           
 boolean isShared(int id)
           
 void readDistributionUpdate(PatchReader reader)
           
private  void readObject(java.io.ObjectInputStream in)
           
private  void restoreAfterUnmarshal()
           
 void setActual(int id, int rank, boolean value)
           
 void setLocal(int id, int rank)
           
 void setLocalRank(int rank)
           
 void setReadOnly(int id, boolean value)
           
 void setSpecified(int id, boolean value)
           
 void setSpecified(int id, int rank, boolean value)
           
 boolean testActual(int id, int rank)
           
 boolean testActualBefore(int id, int rank)
           
 boolean testReadOnly(int id)
           
 boolean testSpecified(int id, int rank)
           
 java.lang.String toStringActual(int id)
           
 java.lang.String toStringDiff(int id)
           
 java.lang.String toStringSpecified(int id)
           
private  void updateSharedCnt(int id)
           
(package private)  void updateSharedIDs(IntIterator newlySharedIDs, IntIterator newlyUnsharedIDs)
           
 void writeDistributionUpdate(PatchWriter[] writers)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BITS_PER_OBJECT

private final int BITS_PER_OBJECT

size

private final int size

offsetActual

private final int offsetActual

offsetSpecified

private final int offsetSpecified

offsetReadOnly

private final int offsetReadOnly

rank

private transient int rank

orig

private final EnlargingBooleanArray2D orig

copy

private transient EnlargingBooleanArray2D copy

modifiedIDs

private transient IntOpenHashSet modifiedIDs

sharedIDs

private transient IntOpenHashSet sharedIDs
Set of indentifiers being shared among the current rank and other ranks. An object is considered shared, if it is present in more than one subspace of this PartitionedObjectSpace and it is not marked read-only.


sharedCnt

private transient int[] sharedCnt
Counts the number of non-read-only objects that are shared between the local rank and each other rank. If this counter reaches zero for some rank, there is no need for communication with this rank during a collective update.

Constructor Detail

PartitionedObjectSpace.Distribution

public PartitionedObjectSpace.Distribution(int size,
                                           int rank)
Method Detail

initTransient

private void initTransient()

setLocalRank

public void setLocalRank(int rank)

getSharedIDs

public final IntIterator getSharedIDs()
See Also:
sharedIDs

updateSharedIDs

void updateSharedIDs(IntIterator newlySharedIDs,
                     IntIterator newlyUnsharedIDs)

testActual

public boolean testActual(int id,
                          int rank)

testActualBefore

public boolean testActualBefore(int id,
                                int rank)

testSpecified

public boolean testSpecified(int id,
                             int rank)

getActiveRanks

public IntIterator getActiveRanks()
Returns:
the ranks that have shared non-read-only objects with the local rank.

setLocal

public void setLocal(int id,
                     int rank)

setActual

public void setActual(int id,
                      int rank,
                      boolean value)

testReadOnly

public boolean testReadOnly(int id)

setReadOnly

public void setReadOnly(int id,
                        boolean value)

setSpecified

public void setSpecified(int id,
                         int rank,
                         boolean value)

setSpecified

public void setSpecified(int id,
                         boolean value)

isShared

public boolean isShared(int id)
See Also:
sharedIDs

isModified

public boolean isModified(int id)

isReferenced

public boolean isReferenced(int id)

getRefCnt

private int getRefCnt(int id,
                      int maxInterest)

restoreAfterUnmarshal

private void restoreAfterUnmarshal()
                            throws java.lang.ClassNotFoundException,
                                   java.io.IOException
Throws:
java.lang.ClassNotFoundException
java.io.IOException

readObject

private void readObject(java.io.ObjectInputStream in)
                 throws java.io.IOException,
                        java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException

broadcast

private void broadcast(PatchWriter[] writers,
                       boolean[] enabled,
                       int data)
                throws java.io.IOException
Throws:
java.io.IOException

writeDistributionUpdate

public void writeDistributionUpdate(PatchWriter[] writers)
                             throws java.io.IOException
Throws:
java.io.IOException

updateSharedCnt

private void updateSharedCnt(int id)

commitLocalModification

private void commitLocalModification(int id)

commitLocalModifications

private void commitLocalModifications()

readDistributionUpdate

public void readDistributionUpdate(PatchReader reader)
                            throws java.io.IOException
Throws:
java.io.IOException
See Also:
#writeDistributionUpdate(PatchWriter[], int)

checkConsistency

public void checkConsistency(java.util.logging.Logger log)

toStringSpecified

public java.lang.String toStringSpecified(int id)

toStringActual

public java.lang.String toStringActual(int id)

toStringDiff

public java.lang.String toStringDiff(int id)