com.multicorebsp.core
Class BSP_ARRAY<T extends CompulsaryCloneable<T>>

java.lang.Object
  extended by com.multicorebsp.core.BSP_GLOBAL_COMM<T[],S>
      extended by com.multicorebsp.core.BSP_GLOBAL_ARR_COMM<T,BSP_ARRAY<T>>
          extended by com.multicorebsp.core.BSP_ARRAY<T>
Type Parameters:
T - Class of the elements to be stored in the array.
All Implemented Interfaces:
java.lang.Iterable<T>

public class BSP_ARRAY<T extends CompulsaryCloneable<T>>
extends BSP_GLOBAL_ARR_COMM<T,BSP_ARRAY<T>>
implements java.lang.Iterable<T>

This class represents a global array definition.

Apart from the general vector-like read / write methods, bulk-synchronous message passing (BSMP) and direct remote memory access (DRMA) methods are available.

This class is to be used within the parallel part of an instance of a BSP_PROGRAM.

Since:
0.1 , 17th of April 2008
See Also:
BSP_REGISTER, BSP_PROGRAM

Field Summary
protected  com.multicorebsp.core.BSP_GLOBAL_ARR<T> global
          Reference to global instance.
protected  int length
          Array size.
protected  int pid
          Processor ID corresponding to this array instance.
 
Constructor Summary
BSP_ARRAY(BSP_PROGRAM thread, int N, T init)
          Base constructor.
 
Method Summary
 void bsp_direct_get(BSP_ARRAY<T> source, int source_processor)
          Direct get instruction.
 void bsp_direct_get(BSP_ARRAY<T> source, int source_processor, int length)
          DRMA Direct-get instruction.
 void bsp_direct_get(BSP_ARRAY<T> source, int source_processor, int source_offset, int destination_offset, int length)
          DRMA Direct-get instruction.
 void bsp_direct_get(int source_processor)
          Get instruction.
 void bsp_direct_get(int source_processor, int length)
          DRMA Direct-get instruction.
 void bsp_direct_get(int source_processor, int source_offset, int dest_offset, int length)
          DRMA Direct get instruction.
 void bsp_get(BSP_ARRAY<T> source, int source_processor)
          DRMA Get instruction.
 void bsp_get(BSP_ARRAY<T> source, int source_processor, int length)
          DRMA Get instruction.
 void bsp_get(BSP_ARRAY<T> source, int source_processor, int source_offset, int destination_offset, int length)
          DRMA Get instruction.
 void bsp_get(int source_processor)
          DRMA Get instruction.
 void bsp_get(int source_processor, int length)
          DRMA Get instruction.
 void bsp_get(int source_processor, int source_offset, int dest_offset, int length)
          DRMA Get instruction.
 void bsp_move()
          Replaces the current value with a BSMP message from this global variable's queue.
 void bsp_put(BSP_ARRAY<T> source, int destination_processor)
          DRMA Put instruction.
 void bsp_put(BSP_ARRAY<T> source, int destination_processor, int length)
          DRMA Put instruction.
 void bsp_put(BSP_ARRAY<T> source, int source_offset, int destination_processor, int destination_offset, int length)
          DRMA Put instruction.
 void bsp_put(java.util.Collection<T> source, int source_offset, int destination_processor, int destination_offset, int length)
          DRMA Put instruction.
 void bsp_put(int destination_processor)
          DRMA Put instruction.
 void bsp_put(int destination_processor, int length)
          DRMA Put instruction.
 void bsp_put(int source_offset, int destination_processor, int dest_offset, int length)
          DRMA Put instruction.
 void bsp_put(T[] source, int destination_processor)
          DRMA Put instruction.
 void bsp_put(T[] source, int destination_processor, int length)
          DRMA Put instruction.
 void bsp_put(T[] source, int source_offset, int destination_processor, int destination_offset, int length)
          DRMA Put instruction.
 void bsp_put(T item, int destination_processor, int destination_offset)
          DRMA Put instruction.
 int bsp_qsize()
          BSMP instruction.
 void bsp_send(java.util.ArrayList<T> source, int to)
          BSMP Enqueue instruction.
 void bsp_send(BSP_ARRAY<T> source, int to)
          BSMP Send instruction.
 void bsp_send(int to)
          BSMP Send instruction.
 void bsp_send(T[] source, int to)
          BSMP instruction.
 java.util.Iterator<T> iterator()
           
 T read(int index)
          Read a given element from the array.
 void unregister()
          Removes all shared references.
 void write(int index, T x)
          Writes a given value to a given position in the array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

global

protected com.multicorebsp.core.BSP_GLOBAL_ARR<T extends CompulsaryCloneable<T>> global
Reference to global instance.


pid

protected int pid
Processor ID corresponding to this array instance.


length

protected int length
Array size.

Constructor Detail

BSP_ARRAY

public BSP_ARRAY(BSP_PROGRAM thread,
                 int N,
                 T init)
Base constructor.

Parameters:
thread - Instance of BSP_PROGRAM corresponding to this global array.
N - Size of array.
init - Initial caption of array elements.
Method Detail

read

public T read(int index)
Read a given element from the array.

Parameters:
index - Index of the element to-be read.
Returns:
The corresponding element from the array.

write

public void write(int index,
                  T x)
Writes a given value to a given position in the array.

Parameters:
index - Index of the position to-be written to.
x - Value to be stored at the given position.

bsp_move

public void bsp_move()
              throws EmptyQueueException
Replaces the current value with a BSMP message from this global variable's queue. If the queue is empty, an EmptyQueueException is thrown. Warning: Since this is a global array, items put in queue also represent arrays.

Specified by:
bsp_move in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Throws:
EmptyQueueException

bsp_qsize

public int bsp_qsize()
Description copied from class: BSP_GLOBAL_COMM
BSMP instruction. Reports the number of messages waiting in the local queue.

Specified by:
bsp_qsize in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Returns:
The number of messages in queue.

bsp_send

public void bsp_send(int to)
BSMP Send instruction. Sends the current array to target global array's queue.

Note that the sent element will be available at the destination only after synchronisation.

Specified by:
bsp_send in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
to - Destination processor.

bsp_send

public void bsp_send(BSP_ARRAY<T> source,
                     int to)
BSMP Send instruction. Sends the current array to target global array's queue.

Note that the sent element will be available at the destination only after synchronisation.

Specified by:
bsp_send in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source array.
to - Destination processor.

bsp_send

public void bsp_send(java.util.ArrayList<T> source,
                     int to)
BSMP Enqueue instruction. Sends a given array to this global array's queue, at the given processor.

Note that the enqueued element will be available at the destination only after synchronisation.

Parameters:
source - The array to be enqueued.
to - Destination processor.

bsp_send

public void bsp_send(T[] source,
                     int to)
Description copied from class: BSP_GLOBAL_COMM
BSMP instruction. Sends the given object to the message queue of the thread with the given ID.

Specified by:
bsp_send in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - The object to send.
to - The ID of the receiving thread.

iterator

public java.util.Iterator<T> iterator()
Specified by:
iterator in interface java.lang.Iterable<T extends CompulsaryCloneable<T>>
Returns:
An iterator to the underlying local array

bsp_direct_get

public void bsp_direct_get(int source_processor)
Description copied from class: BSP_GLOBAL_COMM
Get instruction. Short for bsp_direct_get( this, from );

Specified by:
bsp_direct_get in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - From which processor to get its variable.

bsp_direct_get

public void bsp_direct_get(int source_processor,
                           int length)
DRMA Direct-get instruction. Gets this[ 0, 1, ..., length-1 ] (local to source_processor) and puts those contents in this[ 0, 1, ..., length-1 ] (local to current processor)
This instruction performs the communication immediately and blocks until the communication is done. This differs greatly from all other communication primitives, in that they do not wait for synchronisation.

Specified by:
bsp_direct_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - Processor to get partial array from.
length - Number of elements to copy.

bsp_direct_get

public void bsp_direct_get(int source_processor,
                           int source_offset,
                           int dest_offset,
                           int length)
Description copied from class: BSP_GLOBAL_ARR_COMM
DRMA Direct get instruction. Like normal bsp_get, but direct & blocking.

Specified by:
bsp_direct_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - Processor to get the (partial) vector from.
source_offset - Get elements starting from source[ isource_offset ][..].
dest_offset - Copy elements into sub-array starting from destination[ idestination_offset ][..].
length - Number of elements to retrieve in the row direction.

bsp_direct_get

public void bsp_direct_get(BSP_ARRAY<T> source,
                           int source_processor)
Description copied from class: BSP_GLOBAL_COMM
Direct get instruction. Gets target source variable local to source processor pid, and puts those contents in this variable (local to current processor).
Does this immediately; communication does not wait for a sync, and this method blocks.

Specified by:
bsp_direct_get in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get its contents.
source_processor - From which processor to get its variable.

bsp_direct_get

public void bsp_direct_get(BSP_ARRAY<T> source,
                           int source_processor,
                           int length)
DRMA Direct-get instruction. Gets source[ 0, 1, ..., length-1 ] (local to source_processor) and puts those contents in this[ 0, 1, ..., length-1 ] (local to current processor)
This instruction performs the communication immediately and blocks until the communication is done. This differs greatly from all other communication primitives, in that they do not wait for synchronisation.

Specified by:
bsp_direct_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get the sub-array.
source_processor - Processor to get partial array from.
length - Number of elements to copy.

bsp_direct_get

public void bsp_direct_get(BSP_ARRAY<T> source,
                           int source_processor,
                           int source_offset,
                           int destination_offset,
                           int length)
DRMA Direct-get instruction. Gets source[ source_offset, source_offset+1, ..., source_offset+length-1 ] (local to source_processor) and puts those contents in this[ destination_offset, ..., destination_offset+length-1 ] (local to current processor)
This instruction performs the communication immediately and blocks until the communication is done. This differs greatly from all other communication primitives, in that they do not wait for synchronisation.

Specified by:
bsp_direct_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get the sub-array.
source_processor - Processor to get partial array from.
source_offset - Get elements starting from source[ source_offset ].
destination_offset - Copy elements into sub-array starting from destination[ destination_offset ].
length - Number of elements to copy.

bsp_get

public void bsp_get(int source_processor)
DRMA Get instruction. Gets this[ 0, 1, ... ] (local to source_processor) and puts those contents in this[ 0, 1, ... ] (local to current processor)
This instruction does not buffer the elements to be got as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation.

Specified by:
bsp_get in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - Processor to get partial array from.

bsp_get

public void bsp_get(int source_processor,
                    int length)
DRMA Get instruction. Gets this[ 0, 1, ..., length-1 ] (local to source_processor) and puts those contents in this[ 0, 1, ..., length-1 ] (local to current processor)
This instruction does not buffer the elements to be got as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation.

Specified by:
bsp_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - Processor to get partial array from.
length - Number of element to copy.

bsp_get

public void bsp_get(int source_processor,
                    int source_offset,
                    int dest_offset,
                    int length)
Description copied from class: BSP_GLOBAL_ARR_COMM
DRMA Get instruction. Gets
this[ source_offset, source_offset+1, ..., source_offset+length-1 ] (local to source_processor)
and puts those contents in
this[ destination_offset, ..., destination_offset+length-1 ] (local to current processor)
This instruction does not buffer the elements to be retrieved as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation. Note that this is an alias for bsp_get( this, source_offset, pid, dest_offset, length );

Specified by:
bsp_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_processor - Processor to get the (partial) array from.
source_offset - Get elements starting from source[ isource_offset ][..].
dest_offset - Copy elements into sub-array starting from destination[ idestination_offset ][..].
length - Number of elements to retrieve in the row direction.

bsp_get

public void bsp_get(BSP_ARRAY<T> source,
                    int source_processor)
DRMA Get instruction. Gets source[ 0, 1, ... ] (local to source_processor) and puts those contents in this[ 0, 1, ... ] (local to current processor)
This instruction does not buffer the elements to be got as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation.

Specified by:
bsp_get in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get the sub-array.
source_processor - Processor to get partial array from.

bsp_get

public void bsp_get(BSP_ARRAY<T> source,
                    int source_processor,
                    int length)
DRMA Get instruction. Gets source[ 0, 1, ..., length-1 ] (local to source_processor) and puts those contents in this[ 0, 1, ..., length-1 ] (local to current processor)
This instruction does not buffer the elements to be got as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation.

Specified by:
bsp_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get the sub-array.
source_processor - Processor to get partial array from.
length - Number of element to copy.

bsp_get

public void bsp_get(BSP_ARRAY<T> source,
                    int source_processor,
                    int source_offset,
                    int destination_offset,
                    int length)
DRMA Get instruction. Gets source[ source_offset, source_offset+1, ..., source_offset+length-1 ] (local to source_processor) and puts those contents in this[ destination_offset, ..., destination_offset+length-1 ] (local to current processor)
This instruction does not buffer the elements to be got as they are generally unavailable from this processor's perspective. Hence, those elements in the source vector at synchronisation time are the elements which will be copied to this array.

Note that this implies gets and puts are not necessarily freely interchangeable. Note that the retrieved element will be available at the destination only after synchronisation.

Specified by:
bsp_get in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - From which global variable to get the sub-array.
source_processor - Processor to get partial array from.
source_offset - Get elements starting from source[ source_offset ].
destination_offset - Copy elements into sub-array starting from destination[ destination_offset ].
length - Number of element to copy.

bsp_put

public void bsp_put(int destination_processor)
DRMA Put instruction. Copies the local array to this array local to the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
destination_processor - Target processor ID of this put instruction.

bsp_put

public void bsp_put(int destination_processor,
                    int length)
DRMA Put instruction. Copies the first 'length' elements from the local array to the same array but local to the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
destination_processor - Target processor ID of this put instruction.
length - Put a total of length items.

bsp_put

public void bsp_put(int source_offset,
                    int destination_processor,
                    int dest_offset,
                    int length)
Description copied from class: BSP_GLOBAL_ARR_COMM
DRMA Put instruction. Copies
this[ source_offset, source_offset+1, ..., source_offset+length-1 ] (local to current processor)
to this[ destination_offset, ..., destination_offset+length-1 ] (local to destination processor pid)
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied elements will be available at the destination only after synchronisation. Note that this is an alias to
bsp_put( this, source_offset, pid, dest_offset, length );

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source_offset - Copy length items beginning at this[ source_offset ].
destination_processor - Target processor ID of this put instruction.
dest_offset - Put items into destination starting at this[ destination_offset ] (at processor pid).
length - Put a total of length items in the row direction.

bsp_put

public void bsp_put(BSP_ARRAY<T> source,
                    int destination_processor)
DRMA Put instruction. Copies 'length' elements from input collection (ordered according to the order the iterator returns) to this array, local to the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source collection.
destination_processor - Target processor ID of this put instruction.

bsp_put

public void bsp_put(BSP_ARRAY<T> source,
                    int destination_processor,
                    int length)
DRMA Put instruction. Copies 'length' elements from input collection (elements are added according to the order the iterator returns), and adds them to this array, local to the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source collection.
destination_processor - Target processor ID of this put instruction.
length - Put a total of length items.

bsp_put

public void bsp_put(BSP_ARRAY<T> source,
                    int source_offset,
                    int destination_processor,
                    int destination_offset,
                    int length)
DRMA Put instruction. Copies 'length' elements from input collection (elements are added according to the order the iterator returns), excluding the first 'source_offset' elements, and adds them to this array, local to the destination processor, starting at this[distination_offset].
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source array.
source_offset - Copy length items beginning at source[ source_offset ].
destination_processor - Target processor ID of this put instruction.
destination_offset - Put items into destination starting at destination[ destination_offset ].
length - Put a total of length items.

bsp_put

public void bsp_put(T[] source,
                    int destination_processor)
DRMA Put instruction. Copies a given array to this array, local to destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source array.
destination_processor - Target processor ID of this put instruction.

bsp_put

public void bsp_put(T[] source,
                    int destination_processor,
                    int length)
DRMA Put instruction. Copies the first 'length' elements from input collection (elements are added according to the order the iterator returns), and adds them to this array local to the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source array.
destination_processor - Target processor ID of this put instruction.
length - Put a total of length items.

bsp_put

public void bsp_put(T[] source,
                    int source_offset,
                    int destination_processor,
                    int destination_offset,
                    int length)
DRMA Put instruction. Copies 'length' elements from input collection (elements are added according to the order the iterator returns), excluding the first 'source_offset' elements, and adds them to this array, local to the destination processor, starting at this[distination_offset].
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
source - Source array.
source_offset - Copy length items beginning at source[ source_offset ].
destination_processor - Target processor ID of this put instruction.
destination_offset - Put items into destination starting at destination[ destination_offset ].
length - Put a total of length items.

bsp_put

public void bsp_put(T item,
                    int destination_processor,
                    int destination_offset)
DRMA Put instruction. Copies a single element to this array at this[distination_offset], at the destination processor.
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Specified by:
bsp_put in class BSP_GLOBAL_ARR_COMM<T extends CompulsaryCloneable<T>,BSP_ARRAY<T extends CompulsaryCloneable<T>>>
Parameters:
item - Element to copy.
destination_processor - Target processor ID of this put instruction.
destination_offset - Put items into destination starting at destination[ destination_offset ].

bsp_put

public void bsp_put(java.util.Collection<T> source,
                    int source_offset,
                    int destination_processor,
                    int destination_offset,
                    int length)
DRMA Put instruction. Copies 'length' elements from input array (elements are added according to the order the iterator returns), excluding the first 'source_offset' elements, and adds them to this array, local to the destination processor, starting at this[distination_offset].
This instruction buffers the to-be copied current elements here; array elements thus are free to change after calling this put operation.

Note that the copied element will be available at the destination only after synchronisation.

Parameters:
source - Source array.
source_offset - Copy length items beginning at source[ source_offset ].
destination_processor - Target processor ID of this put instruction.
destination_offset - Put items into destination starting at destination[ destination_offset ].
length - Put a total of length items.

unregister

public void unregister()
Description copied from class: BSP_GLOBAL_COMM
Removes all shared references. Cannot be used afterwards.

Specified by:
unregister in class BSP_GLOBAL_COMM<T extends CompulsaryCloneable<T>[],BSP_ARRAY<T extends CompulsaryCloneable<T>>>