-
in rank_of, because mt and nt are for the submatrix:
/* Offset by (i,j) to translate (m,n) in the global matrix */
m += dc->super.i / dc->super.mb;
n += dc->super.j / dc->super.nb;
assert( m < dc->super.mt );
assert( n < dc->super.nt );
This can be solved by changing mt/nt to lmt/lnt.
-
in data_of, which calls desc->rank_of(desc, m, n) again:
/* Offset by (i,j) to translate (m,n) in the global matrix */
m += dc->super.i / dc->super.mb;
n += dc->super.j / dc->super.nb;
assert( m < dc->super.mt );
assert( n < dc->super.nt );
#if defined(DISTRIBUTED)
assert(desc->myrank == desc->rank_of(desc, m, n));
#endif
Not sure yet.
in rank_of, because mt and nt are for the submatrix:
/* Offset by (i,j) to translate (m,n) in the global matrix */
m += dc->super.i / dc->super.mb;
n += dc->super.j / dc->super.nb;
assert( m < dc->super.mt );
assert( n < dc->super.nt );
This can be solved by changing mt/nt to lmt/lnt.
in data_of, which calls desc->rank_of(desc, m, n) again:
/* Offset by (i,j) to translate (m,n) in the global matrix */
m += dc->super.i / dc->super.mb;
n += dc->super.j / dc->super.nb;
assert( m < dc->super.mt );
assert( n < dc->super.nt );
#if defined(DISTRIBUTED)
assert(desc->myrank == desc->rank_of(desc, m, n));
#endif
Not sure yet.