本文整理汇总了C++中pup::er::isUnpacking方法的典型用法代码示例。如果您正苦于以下问题:C++ er::isUnpacking方法的具体用法?C++ er::isUnpacking怎么用?C++ er::isUnpacking使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pup::er
的用法示例。
在下文中一共展示了er::isUnpacking方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pup
/// PUP routine
void GVT::pup(PUP::er &p) {
p|estGVT; p|inactive; p|inactiveTime; p|nextLBstart;
p|lastEarliest; p|lastSends; p|lastRecvs; p|reportsExpected;
p|optGVT; p|conGVT; p|done; p|startOffset;
p|gvtIterationCount;
if (p.isUnpacking()) {
#ifndef CMK_OPTIMIZE
localStats = (localStat *)CkLocalBranch(theLocalStats);
#endif
}
int nullFlag;
if (SRs == NULL) {
nullFlag = 1;
} else {
nullFlag = 0;
}
p|nullFlag;
if (p.isUnpacking()) {
if (nullFlag) {
SRs = NULL;
} else {
SRs = new SRentry();
SRs->pup(p);
}
} else {
if (!nullFlag) {
SRs->pup(p);
}
}
}
示例2: CkPupMainChareData
// handle main chare
void CkPupMainChareData(PUP::er &p, CkArgMsg *args)
{
int nMains=_mainTable.size();
DEBCHK("[%d] CkPupMainChareData %s: nMains = %d\n", CkMyPe(),p.typeString(),nMains);
for(int i=0;i<nMains;i++){ /* Create all mainchares */
ChareInfo *entry = _chareTable[_mainTable[i]->chareIdx];
int entryMigCtor = entry->getMigCtor();
if(entryMigCtor!=-1) {
Chare* obj;
if (p.isUnpacking()) {
int size = entry->size;
DEBCHK("MainChare PUP'ed: name = %s, idx = %d, size = %d\n", entry->name, i, size);
obj = (Chare*)malloc(size);
_MEMCHECK(obj);
_mainTable[i]->setObj(obj);
//void *m = CkAllocSysMsg();
_entryTable[entryMigCtor]->call(args, obj);
}
else
obj = (Chare *)_mainTable[i]->getObj();
obj->pup(p);
}
}
// to update mainchare proxy
// only readonly variables of Chare Proxy is taken care of here;
// in general, if chare proxy is contained in some data structure
// for example CkCallback, it is user's responsibility to
// update them after restarting
if (p.isUnpacking() && CkMyPe()==0)
bdcastRO();
}
示例3: VecGetSize
void operator| (PUP::er& p, Vec& v) {
PetscInt sz;
if (!p.isUnpacking()) {
VecGetSize(v, &sz);
}
p | sz;
if(p.isUnpacking()) {
VecCreateSeq(PETSC_COMM_WORLD, sz, &v);
VecSetFromOptions(v);
VecGetSize(v, &sz);
for (int i = 0; i < sz; i++) {
PetscScalar d;
p | d;
VecSetValue(v, i, d, INSERT_VALUES);
}
VecAssemblyBegin(v);
VecAssemblyEnd(v);
}
else {
for (int i = 0; i < sz; i++) {
PetscScalar d;
VecGetValues(v, 1, &i, &d);
p | d;
}
}
}
示例4: CkPupGroupData
// handle GroupTable and data
void CkPupGroupData(PUP::er &p, CmiBool create)
{
int numGroups, i;
if (!p.isUnpacking()) {
numGroups = CkpvAccess(_groupIDTable)->size();
}
p|numGroups;
if (p.isUnpacking()) {
if(CkMyPe()==0)
CkpvAccess(_numGroups) = numGroups+1;
else
CkpvAccess(_numGroups) = 1;
}
DEBCHK("[%d] CkPupGroupData %s: numGroups = %d\n", CkMyPe(),p.typeString(),numGroups);
GroupInfo *tmpInfo = new GroupInfo [numGroups];
if (!p.isUnpacking()) {
for(i=0;i<numGroups;i++) {
tmpInfo[i].gID = (*CkpvAccess(_groupIDTable))[i];
TableEntry ent = CkpvAccess(_groupTable)->find(tmpInfo[i].gID);
tmpInfo[i].MigCtor = _chareTable[ent.getcIdx()]->migCtor;
tmpInfo[i].DefCtor = _chareTable[ent.getcIdx()]->defCtor;
strncpy(tmpInfo[i].name,_chareTable[ent.getcIdx()]->name,255);
//CkPrintf("[%d] CkPupGroupData: %s group %s \n", CkMyPe(), p.typeString(), tmpInfo[i].name);
if(tmpInfo[i].MigCtor==-1) {
char buf[512];
sprintf(buf,"Group %s needs a migration constructor and PUP'er routine for restart.\n", tmpInfo[i].name);
CkAbort(buf);
}
}
}
for (i=0; i<numGroups; i++) p|tmpInfo[i];
for(i=0;i<numGroups;i++)
{
CkGroupID gID = tmpInfo[i].gID;
if (p.isUnpacking()) {
//CkpvAccess(_groupIDTable)->push_back(gID);
int eIdx = tmpInfo[i].MigCtor;
// error checking
if (eIdx == -1) {
CkPrintf("[%d] ERROR> Group %s's migration constructor is not defined!\n", CkMyPe(), tmpInfo[i].name); CkAbort("Abort");
}
void *m = CkAllocSysMsg();
envelope* env = UsrToEnv((CkMessage *)m);
if(create)
CkCreateLocalGroup(gID, eIdx, env);
} // end of unPacking
IrrGroup *gobj = CkpvAccess(_groupTable)->find(gID).getObj();
// if using migration constructor, you'd better have a pup
if(!create)
gobj->mlogData->teamRecoveryFlag = 1;
gobj->pup(p);
// CkPrintf("Group PUP'ed: gid = %d, name = %s\n",gobj->ckGetGroupID().idx, tmpInfo[i].name);
}
delete [] tmpInfo;
}
示例5: pup
void pup(PUP::er &p) {
p|len1;
if (p.isUnpacking()) arr1=new int[len1];
PUParray(p,arr1,len1);
p|len2;
if (p.isUnpacking()) arr2=new int[len2];
PUParray(p,arr2,len2);
p|subclass;
}
示例6: CkPupROData
void CkPupROData(PUP::er &p)
{
int _numReadonlies;
if (!p.isUnpacking()) _numReadonlies=_readonlyTable.size();
p|_numReadonlies;
if (p.isUnpacking()) {
if (_numReadonlies != _readonlyTable.size())
CkAbort("You cannot add readonlies and restore from checkpoint...");
}
for(int i=0;i<_numReadonlies;i++) _readonlyTable[i]->pupData(p);
}
示例7: CkPupNodeGroupData
// handle NodeGroupTable and data
void CkPupNodeGroupData(PUP::er &p, CmiBool create)
{
int numNodeGroups, i;
if (!p.isUnpacking()) {
numNodeGroups = CksvAccess(_nodeGroupIDTable).size();
}
p|numNodeGroups;
if (p.isUnpacking()) {
if(CkMyPe()==0){ CksvAccess(_numNodeGroups) = numNodeGroups+1; }
else { CksvAccess(_numNodeGroups) = 1; }
}
if(CkMyPe() == 3)
CkPrintf("[%d] CkPupNodeGroupData %s: numNodeGroups = %d\n",CkMyPe(),p.typeString(),numNodeGroups);
GroupInfo *tmpInfo = new GroupInfo [numNodeGroups];
if (!p.isUnpacking()) {
for(i=0;i<numNodeGroups;i++) {
tmpInfo[i].gID = CksvAccess(_nodeGroupIDTable)[i];
TableEntry ent2 = CksvAccess(_nodeGroupTable)->find(tmpInfo[i].gID);
tmpInfo[i].MigCtor = _chareTable[ent2.getcIdx()]->migCtor;
if(tmpInfo[i].MigCtor==-1) {
char buf[512];
sprintf(buf,"NodeGroup %s either need a migration constructor and\n\
declared as [migratable] in .ci to be able to checkpoint.",\
_chareTable[ent2.getcIdx()]->name);
CkAbort(buf);
}
}
}
for (i=0; i<numNodeGroups; i++) p|tmpInfo[i];
for (i=0;i<numNodeGroups;i++) {
CkGroupID gID = tmpInfo[i].gID;
if (p.isUnpacking()) {
//CksvAccess(_nodeGroupIDTable).push_back(gID);
int eIdx = tmpInfo[i].MigCtor;
void *m = CkAllocSysMsg();
envelope* env = UsrToEnv((CkMessage *)m);
if(create){
CkCreateLocalNodeGroup(gID, eIdx, env);
}
}
TableEntry ent2 = CksvAccess(_nodeGroupTable)->find(gID);
IrrGroup *obj = ent2.getObj();
obj->pup(p);
if(CkMyPe() == 3) CkPrintf("Nodegroup PUP'ed: gid = %d, name = %s\n",
obj->ckGetGroupID().idx,
_chareTable[ent2.getcIdx()]->name);
}
delete [] tmpInfo;
}
示例8: pup
void CkMarshalledCLBStatsMessage::pup(PUP::er &p)
{
int count = msgs.size();
p|count;
for (int i=0; i<count; i++) {
CLBStatsMsg *msg;
if (p.isUnpacking()) msg = new CLBStatsMsg;
else {
msg = msgs[i]; CmiAssert(msg!=NULL);
}
msg->pup(p);
if (p.isUnpacking()) add(msg);
}
}
示例9: pup
void BinaryTreeNode::pup(PUP::er &p, int depth) {
//CkPrintf("Pupper of BinaryTreeNode(%d) called for %s (%d)\n",depth,p.isPacking()?"Packing":p.isUnpacking()?"Unpacking":"Sizing",p.isSizing()?((PUP::sizer*)&p)->size():((PUP::mem*)&p)->size());
GenericTreeNode::pup(p);
int isNull;
for (int i=0; i<2; ++i) {
isNull = (children[i]==NULL || depth==0) ? 0 : 1;
p | isNull;
CkAssert(isNull==0 || isNull==1);
if (isNull != 0 && depth != 0) {
if (p.isUnpacking()) children[i] = new BinaryTreeNode();
children[i]->pup(p, depth-1);
if (p.isUnpacking()) children[i]->parent = this;
}
}
};
示例10: pup
/// Pack-Unpack method.
/// We pack/unpack the handle to the collide manager group.
/// When unpacking, we register this element with the local branch
/// of the collide manager group on the new PE.
void pup(PUP::er &p)
{
ArrayElement1D::pup(p);
p|collide;
if (p.isUnpacking())
CollideRegister(collide, thisIndex);
}
示例11: pup
void CkQuadView::pup(PUP::er &p) {
CkView::pup(p);
p.comment("Texture corners");
p|nCorners;
for (int i=0;i<nCorners;i++) {
p|corners[i];
p|texCoord[i];
}
// Pup the image:
x_tex.pup(p);
#ifdef CMK_LIVEVIZ3D_CLIENT
if (p.isUnpacking()) { /* immediately upload image to OpenGL */
CkAllocImage *img=x_tex.getImage();
oglTextureFormat_t fmt=oglImageFormat(*img);
c_tex=new oglLilTex(img->getData(),x_tex.gl_w,x_tex.gl_h,
fmt.format,fmt.type);
stats::get()->add(x_tex.w*x_tex.h,op_upload_pixels);
stats::get()->add(x_tex.gl_w*x_tex.gl_h,op_uploadpad_pixels);
/// Scale texture coordinates from the partial image to OpenGL fractions:
double tx=x_tex.w/(double)x_tex.gl_w;
double ty=x_tex.h/(double)x_tex.gl_h;
for (int i=0;i<nCorners;i++)
texCoord[i]=c_tex->texCoord(
CkVector3d(tx*texCoord[i].x,ty*texCoord[i].y,texCoord[i].z)
);
//Now that we've copied the view into GL,
// flush the old in-memory copy:
delete img;
}
#endif
}
示例12: pup
/** Recursively packs/sizes entire subheap; DOES NOT UNPACK HEAP!!! */
void HeapNode::pup(PUP::er &p)
{
CmiAssert(this != NULL);
CmiAssert(!p.isUnpacking());
e->pup(p);
if (left) left->pup(p);
if (right) right->pup(p);
}
示例13:
void asf::parameter_float_image::pup(PUP::er &p) {
parameter_pixel_image::pup(p);
// Allocate pixel data (if needed)
if (p.isUnpacking()) data_alloc(src_alloc,0,bands(),bands()*pixel().size_x());
// Pup all pixel data (FIXME: speed up contiguous case?)
ASF_FOR_PIXELS(x,y,pixels())
p(&at(x,y,0),bands());
}
示例14: pup
void NetFEM_update::pup(PUP::er &p) {
int version=2; p(version);
if (version>=2) p(source);
p(timestep);
p(dim);
if (nodes==NULL) {
if (!p.isUnpacking()) CmiAbort("You forgot to call NetFEM_Nodes!");
else nodes=new NetFEM_nodes;
}
nodes->pup(p);
p(nElems);
for (int i=0;i<nElems;i++) {
if (p.isUnpacking()) elems[i]=new NetFEM_elems;
elems[i]->pup(p);
}
}
示例15: CkPupArrayElementsData
// handle chare array elements for this processor
void CkPupArrayElementsData(PUP::er &p, int notifyListeners)
{
int i;
// safe in both packing/unpakcing at this stage
int numGroups = CkpvAccess(_groupIDTable)->size();
// number of array elements on this processor
int numElements;
if (!p.isUnpacking()) {
ElementCounter counter;
CKLOCMGR_LOOP(mgr->iterate(counter););