start of block matrix multiply