Internal::broadcast(d);
for(int site=0, xsite2=0; site < Layout::vol(); site += xinc) { if (Layout::primaryNode()) bfread((void *)(data.slice() + xsite2), sizeof(typename WordType<T>::Type_t), xinc*sizeof(T)/sizeof(typename WordType<T>::Type_t), bin.get());  xsite2 = QMP_shift((site + xinc) % Layout::vol(), (unsigned char*)(data.slice()), sizeof(T), xinc); }  for(int site=0; site < Layout::sitesOnNode(); ++site) {  d.elem(site) = data[site]; }
BinaryReader& read(BinaryReader& bin, T& d){  if (Layout::primaryNode())     if (bfread((void *)&d, sizeof(T), 1, bin.get()) != 1)      QDP_error_exit("BinaryReader: failed to read");  // Now broadcast back out to all nodes  Internal::broadcast(d);  return bin;}