Even in Barry's original code, I don't understand why we can expect this check to be producing a collective result. Surely there can be some ranks that see everything evenly divide and others that do not.It seems to me that we should either (a) explicitly disallow matrices with a block size to be built when the blocks are not filled or (b) when the user requests blocks, pad blocks so that we can always use an ISBlock.