if (Layout::primaryNode()) bfread((void *)&d, sizeof(T), 1, bin.get());
for(int j=0; j < d.size2(); ++j) for(int i=0; i < d.size1(); ++i) read(bin, d[j][i]);
BinaryReader& read(BinaryReader& bin, const T& d){  if (Layout::primaryNode())     bfread((void *)&d, sizeof(T), 1, bin.get());   return bin;}