The horizontal[a] type (a is number of blocks) will split up data horizontally into blocks. If the split is uneven then the extra data will be distributed amongst the blocks in the most efficient way to to keep the blocks as similar size as possible. There are a number of different communication rules associated with the horizontal partition, based on the assignment a:=b
a
b
Semantics
partition
single
MPI Scatter
single
partition
MPI Gather
partition
partition
Depends on whether or not the partitions are the same type
Looking at the last row in the table, if the two partitons are the same type then a simple copy can often be performed. However, if they are different then an error will be generated - you can not assign differently typed partitions to each other.
Horizontal blocks also support .high and .low, which will return the top and bottom bounds of the block