| version 1.1058 | version 1.1059 |
|---|
| |
| PACK_RESIZE(atomIDList); | PACK_RESIZE(atomIDList); |
| ) | ) |
| | |
| | |
| // DMK - Atom Separation (water vs. non-water) | |
| #if NAMD_SeparateWaters != 0 | |
| | |
| PACK_MSG(ProxyDataMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| PACK(numWaterAtoms); | |
| ) | |
| | |
| #else // NAMD_SeparateWaters == 0 | |
| | |
| PACK_MSG(ProxyDataMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| ) | |
| | |
| #endif | |
| | |
| | |
| // DMK - Atom Separation (water vs. non-water) | |
| #if NAMD_SeparateWaters != 0 | |
| | |
| #ifdef MEM_OPT_VERSION | |
| PACK_MSG(ProxyAllMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| PACK_RESIZE(extInfoList); | |
| PACK(numWaterAtoms); | |
| ) | |
| #else | |
| PACK_MSG(ProxyAllMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| PACK(numWaterAtoms); | |
| ) | |
| #endif | |
| | |
| #else // NAMD_SeparateWaters == 0 | |
| | |
| #ifdef MEM_OPT_VERSION | |
| PACK_MSG(ProxyAllMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| PACK_RESIZE(extInfoList); | |
| ) | |
| #else | |
| PACK_MSG(ProxyAllMsg, | |
| PACK(patch); | |
| PACK(flags); | |
| PACK_RESIZE(positionList); | |
| if (packmsg_msg->flags.doMolly) PACK_RESIZE(avgPositionList); | |
| ) | |
| #endif | |
| | |
| #endif | |
| | |
| | |
| PACK_MSG(ProxySpanningTreeMsg, | PACK_MSG(ProxySpanningTreeMsg, |
| PACK(patch); | PACK(patch); |
| PACK(node); | PACK(node); |
| |
| ) | ) |
| | |
| void* ProxyResultMsg::pack(ProxyResultMsg *msg) { | void* ProxyResultMsg::pack(ProxyResultMsg *msg) { |
| | |
| int msg_size = 0; | int msg_size = 0; |
| msg_size += sizeof(msg->node); | msg_size += sizeof(msg->node); |
| msg_size += sizeof(msg->patch); | msg_size += sizeof(msg->patch); |
| |
| } | } |
| | |
| ProxyResultMsg* ProxyResultMsg::unpack(void *ptr) { | ProxyResultMsg* ProxyResultMsg::unpack(void *ptr) { |
| | |
| void *vmsg = CkAllocBuffer(ptr,sizeof(ProxyResultMsg)); | void *vmsg = CkAllocBuffer(ptr,sizeof(ProxyResultMsg)); |
| ProxyResultMsg *msg = new (vmsg) ProxyResultMsg; | ProxyResultMsg *msg = new (vmsg) ProxyResultMsg; |
| char *msg_cur = (char*)ptr; | char *msg_cur = (char*)ptr; |
| |
| int pids[proxySpanDim]; | int pids[proxySpanDim]; |
| int npid = proxy->getSpanningTreeChild(pids); | int npid = proxy->getSpanningTreeChild(pids); |
| if (npid) { | if (npid) { |
| ProxyDataMsg *newmsg = new(PRIORITY_SIZE) ProxyDataMsg; | ProxyDataMsg *newmsg = (ProxyDataMsg *)CkCopyMsg((void **)&msg); |
| CkSetQueueing(newmsg, CK_QUEUEING_IFIFO); | |
| *((int*) CkPriorityPtr(newmsg)) = *((int*) CkPriorityPtr(msg)); | |
| newmsg->patch = msg->patch; | |
| newmsg->flags = msg->flags; | |
| newmsg->positionList = msg->positionList; | |
| newmsg->avgPositionList = msg->avgPositionList; | |
| //ProxyMgr::Object()->sendProxyData(newmsg,npid,pids); | |
| | |
| //At the second level of the tree immediate messages are not needed | //At the second level of the tree immediate messages are not needed |
| CProxy_ProxyMgr cp(CpvAccess(BOCclass_group).proxyMgr); | CProxy_ProxyMgr cp(CpvAccess(BOCclass_group).proxyMgr); |
| |
| } | } |
| | |
| void | void |
| ProxyMgr::sendProxyAll(ProxyAllMsg *msg, int pcnt, int *pids) { | ProxyMgr::sendProxyAll(ProxyDataMsg *msg, int pcnt, int *pids) { |
| CProxy_ProxyMgr cp(CpvAccess(BOCclass_group).proxyMgr); | CProxy_ProxyMgr cp(CpvAccess(BOCclass_group).proxyMgr); |
| cp.recvImmediateProxyAll(msg,pcnt,pids); | cp.recvImmediateProxyAll(msg,pcnt,pids); |
| } | } |
| | |
| void | void |
| ProxyMgr::recvProxyAll(ProxyAllMsg *msg) { | ProxyMgr::recvProxyAll(ProxyDataMsg *msg) { |
| ProxyPatch *proxy = (ProxyPatch *) PatchMap::Object()->patch(msg->patch); | ProxyPatch *proxy = (ProxyPatch *) PatchMap::Object()->patch(msg->patch); |
| proxy->receiveAll(msg); // deleted in ProxyPatch::receiveAtoms() | proxy->receiveAll(msg); // deleted in ProxyPatch::receiveAtoms() |
| } | } |
| | |
| void | void |
| ProxyMgr::recvImmediateProxyAll(ProxyAllMsg *msg) { | ProxyMgr::recvImmediateProxyAll(ProxyDataMsg *msg) { |
| ProxyPatch *proxy = (ProxyPatch *) PatchMap::Object()->patch(msg->patch); | ProxyPatch *proxy = (ProxyPatch *) PatchMap::Object()->patch(msg->patch); |
| if (proxySendSpanning == 1) { | if (proxySendSpanning == 1) { |
| // copy the message and send to spanning children | // copy the message and send to spanning children |
| int pids[proxySpanDim]; | int pids[proxySpanDim]; |
| int npid = proxy->getSpanningTreeChild(pids); | int npid = proxy->getSpanningTreeChild(pids); |
| if (npid) { | if (npid) { |
| ProxyAllMsg *newmsg = new(PRIORITY_SIZE) ProxyAllMsg; | ProxyDataMsg *newmsg = (ProxyDataMsg *)CkCopyMsg((void **)&msg); |
| CkSetQueueing(newmsg, CK_QUEUEING_IFIFO); | |
| *((int*) CkPriorityPtr(newmsg)) = *((int*) CkPriorityPtr(msg)); | |
| newmsg->patch = msg->patch; | |
| newmsg->flags = msg->flags; | |
| newmsg->positionList = msg->positionList; | |
| newmsg->avgPositionList = msg->avgPositionList; | |
| #ifdef MEM_OPT_VERSION | |
| newmsg->extInfoList = msg->extInfoList; | |
| #endif | |
| ProxyMgr::Object()->sendProxyAll(newmsg,npid,pids); | ProxyMgr::Object()->sendProxyAll(newmsg,npid,pids); |
| } | } |
| } | } |