⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messimpl.cc

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 CC
📖 第 1 页 / 共 2 页
字号:
}voidMessageGrp::send(int target, float* data, int ndata){  raw_send(target, data, ndata*sizeof(float));}voidMessageGrp::send(int target, unsigned int* data, int ndata){  raw_send(target, data, ndata*sizeof(int));}voidMessageGrp::send(int target, int* data, int ndata){  raw_send(target, data, ndata*sizeof(int));}voidMessageGrp::send(int target, char* data, int ndata){  raw_send(target, data, ndata);}voidMessageGrp::send(int target, unsigned char* data, int ndata){  raw_send(target, data, ndata);}voidMessageGrp::send(int target, signed char* data, int ndata){  raw_send(target, data, ndata);}// Sequential receive routinesvoidMessageGrp::recv(int sender, double* data, int ndata){  raw_recv(sender, data, ndata*sizeof(double));}voidMessageGrp::recv(int sender, short* data, int ndata){  raw_recv(sender, data, ndata*sizeof(short));}voidMessageGrp::recv(int sender, long* data, int ndata){  raw_recv(sender, data, ndata*sizeof(long));}voidMessageGrp::recv(int sender, float* data, int ndata){  raw_recv(sender, data, ndata*sizeof(float));}voidMessageGrp::recv(int sender, unsigned int* data, int ndata){  raw_recv(sender, data, ndata*sizeof(int));}voidMessageGrp::recv(int sender, int* data, int ndata){  raw_recv(sender, data, ndata*sizeof(int));}voidMessageGrp::recv(int sender, char* data, int ndata){  raw_recv(sender, data, ndata);}voidMessageGrp::recv(int sender, unsigned char* data, int ndata){  raw_recv(sender, data, ndata);}voidMessageGrp::recv(int sender, signed char* data, int ndata){  raw_recv(sender, data, ndata);}// Typed send routinesvoidMessageGrp::sendt(int target, int type, double* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(double));}voidMessageGrp::sendt(int target, int type, short* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(short));}voidMessageGrp::sendt(int target, int type, long* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(long));}voidMessageGrp::sendt(int target, int type, float* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(float));}voidMessageGrp::sendt(int target, int type, unsigned int* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(int));}voidMessageGrp::sendt(int target, int type, int* data, int ndata){  raw_sendt(target, type, data, ndata*sizeof(int));}voidMessageGrp::sendt(int target, int type, char* data, int ndata){  raw_sendt(target, type, data, ndata);}voidMessageGrp::sendt(int target, int type, unsigned char* data, int ndata){  raw_sendt(target, type, data, ndata);}voidMessageGrp::sendt(int target, int type, signed char* data, int ndata){  raw_sendt(target, type, data, ndata);}// Typed receive routinesvoidMessageGrp::recvt(int type, double* data, int ndata){  raw_recvt(type, data, ndata*sizeof(double));}voidMessageGrp::recvt(int type, short* data, int ndata){  raw_recvt(type, data, ndata*sizeof(short));}voidMessageGrp::recvt(int type, long* data, int ndata){  raw_recvt(type, data, ndata*sizeof(long));}voidMessageGrp::recvt(int type, float* data, int ndata){  raw_recvt(type, data, ndata*sizeof(float));}voidMessageGrp::recvt(int type, unsigned int* data, int ndata){  raw_recvt(type, data, ndata*sizeof(int));}voidMessageGrp::recvt(int type, int* data, int ndata){  raw_recvt(type, data, ndata*sizeof(int));}voidMessageGrp::recvt(int type, char* data, int ndata){  raw_recvt(type, data, ndata);}voidMessageGrp::recvt(int type, unsigned char* data, int ndata){  raw_recvt(type, data, ndata);}voidMessageGrp::recvt(int type, signed char* data, int ndata){  raw_recvt(type, data, ndata);}// Broadcast operationsvoidMessageGrp::bcast(double*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(double), from);}voidMessageGrp::bcast(short*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(short), from);}voidMessageGrp::bcast(long*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(long), from);}voidMessageGrp::bcast(float*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(float), from);}voidMessageGrp::bcast(unsigned int*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(int), from);}voidMessageGrp::bcast(int*data, int ndata, int from){  raw_bcast(data, ndata*sizeof(int), from);}voidMessageGrp::bcast(char*data, int ndata, int from){  raw_bcast(data, ndata, from);}voidMessageGrp::bcast(unsigned char*data, int ndata, int from){  raw_bcast(data, ndata, from);}voidMessageGrp::bcast(signed char*data, int ndata, int from){  raw_bcast(data, ndata, from);}// Global classdesc indicesintMessageGrp::classdesc_to_index(const ClassDesc* cdptr){  if (classdesc_to_index_.find((ClassDesc*)cdptr) != classdesc_to_index_.end()) {      return classdesc_to_index_[(ClassDesc*)cdptr];    }  else {      return -1;    }}const ClassDesc*MessageGrp::index_to_classdesc(int index){  if (index < 0 || index >= nclass_) {      return 0;    }  else {      return index_to_classdesc_[index];    }}voidMessageGrp::raw_bcast(void* data, int nbyte, int from){  int nbyte_actual = nbyte;  int tgop_max = nbyte;  if (gop_max_ != 0) {      tgop_max = gop_max_;      gop_max_ = 0;      bcast(nbyte_actual,from);      gop_max_ = tgop_max;    }  for (int idat=0; idat<nbyte_actual; idat+=tgop_max) {      int ndat = (idat+tgop_max>nbyte_actual)?(nbyte_actual-idat):tgop_max;      Ref<GlobalMsgIter> i(topology_->global_msg_iter(this, from));      for (i->forwards(); !i->done(); i->next()) {          if (i->send()) {              raw_send(i->sendto(), &((char*)data)[idat], ndat);            }          if (i->recv()) {              raw_recv(i->recvfrom(), &((char*)data)[idat], ndat);            }        }    }}voidMessageGrp::sync(){  Ref<GlobalMsgIter> i(topology_->global_msg_iter(this, 0));  for (i->backwards(); !i->done(); i->next()) {      if (i->send()) {          raw_send(i->sendto(), 0, 0);        }      if (i->recv()) {          raw_recv(i->recvfrom(), 0, 0);        }    }    for (i->forwards(); !i->done(); i->next()) {      if (i->send()) {          raw_send(i->sendto(), 0, 0);        }      if (i->recv()) {          raw_recv(i->recvfrom(), 0, 0);        }    }}voidMessageGrp::collect(const double *part, const int *lengths, double *whole){  raw_collect(part,lengths,whole,sizeof(double));}voidMessageGrp::raw_collect(const void *part, const int *lengths, void *whole,                        int bytes_per_datum){  int offset = 0;  for (int i=0; i<n_; i++) {      int nbytes = lengths[i];      if (i==me_) memcpy(&((char*)whole)[offset], part, nbytes);      raw_bcast(&((char*)whole)[offset], nbytes, i);      offset += nbytes;    }}/////////////////////////////////////////////////////////////////////////////// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -