本文整理汇总了C++中CkAssert函数的典型用法代码示例。如果您正苦于以下问题:C++ CkAssert函数的具体用法?C++ CkAssert怎么用?C++ CkAssert使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CkAssert函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CkAssert
int BulkAdapt::get_node_from_idxl(int node_idxl, int partID)
{
IDXL_List *list = meshPtr->node.shared.getIdxlListN(partID);
CkAssert(list!=NULL);
CkAssert(list->size()>node_idxl);
return (*list)[node_idxl];
}
示例2: CkAssert
/** Print all the elements adjacent to the given element.
*/
void FEM_Mesh::e2e_printAll(ElemID e)
{
if (e.id == -1) return; // non existent element
FEM_IndexAttribute *eAdj;
FEM_IndexAttribute *eAdjType;
if(FEM_Is_ghost_index(e.id)){
eAdj = (FEM_IndexAttribute *)elem[e.type].getGhost()->lookup(FEM_ELEM_ELEM_ADJACENCY,"e2e_printAll");
eAdjType = (FEM_IndexAttribute *)elem[e.type].getGhost()->lookup(FEM_ELEM_ELEM_ADJ_TYPES,"e2e_printAll");
}
else {
eAdj = (FEM_IndexAttribute *)elem[e.type].lookup(FEM_ELEM_ELEM_ADJACENCY,"e2e_printAll");
eAdjType = (FEM_IndexAttribute *)elem[e.type].lookup(FEM_ELEM_ELEM_ADJ_TYPES,"e2e_printAll");
}
AllocTable2d<int> &eAdjs = eAdj->get();
AllocTable2d<int> &eAdjTypes = eAdjType->get();
CkAssert(eAdjs.width() == eAdjTypes.width());
CkAssert(e.getSignedId()>=0);
for (int i=0; i<eAdjs.width(); i++) {
CkPrintf("Element %d,%d is adjacent to %d,%d\n", e.type, e.id, eAdjTypes[e.getSignedId()][i], eAdjs[e.getSignedId()][i]);
}
}
示例3: CkPrintf
/** Count the number of elements on edge (n1, n2) */
int FEM_Mesh::countElementsOnEdge(int n1, int n2) {
if (n1==n2) {
CkPrintf("ERROR: You called countElementsOnEdge() with two identical nodes %d, and %d \n", n1, n2);
CkExit();
}
int *n1AdjElems=0, *n2AdjElems=0;
int n1NumElems, n2NumElems;
CkAssert(node.is_valid_any_idx(n1));
CkAssert(node.is_valid_any_idx(n2));
n2e_getAll(n1, n1AdjElems, n1NumElems);
n2e_getAll(n2, n2AdjElems, n2NumElems);
CkAssert(n1AdjElems!=0);
CkAssert(n2AdjElems!=0);
int count=0;
for (int i=0; i<n1NumElems; i++) {
for (int j=0; j<n2NumElems; j++) {
if (n1AdjElems[i] == n2AdjElems[j]) {
count++;
}
}
}
delete[] n1AdjElems;
delete[] n2AdjElems;
return count;
}
示例4: CkAssert
//! one entry is called for 'time' seconds, value is counter reading
void StatTable::setEp(int epidx, int stat, long long value, double time)
{
// CmiPrintf("StatTable::setEp %08x %d %d %d %f\n",
// this, epidx, stat, value, time);
CkAssert(epidx<MAX_ENTRIES);
CkAssert(stat<numStats_ && stat>=0);
int numCalled = stats_[stat].numCalled[epidx];
double avg = stats_[stat].avgCount[epidx];
double stdDev = stats_[stat].stdDevCount[epidx];
stats_[stat].numCalled[epidx]++;
stats_[stat].avgCount[epidx] = (avg * numCalled + value) / (numCalled + 1);
// note that the stddev calculation is not quite correct, but it's
// almost correct and over time will converge with true value
avg = stats_[stat].avgCount[epidx];
stats_[stat].stdDevCount[epidx] =
(stdDev * numCalled + (value-avg)*(value-avg)) / (numCalled+1);
// CmiPrintf("variance %f avg %f value %ld calcVariance %f\n",
// stdDev, avg, value, stats_[stat].stdDevCount[epidx]);
stats_[stat].totTime[epidx] += time;
if (stats_[stat].maxCount[epidx] < value) {
stats_[stat].maxCount[epidx] = value;
}
if (stats_[stat].minCount[epidx] > value) {
stats_[stat].minCount[epidx] = value;
}
}
示例5: while
// non-recursive algorithm with adaptive grain size control
void Node::sequentialColoringHelper(bool& wait, bool& solutionFound, std::vector<vertex>& result)
{
while(!stackForSequential.empty())
{
sequentialCurr = CkTimer();
// Check if the sequential algorithm has run for 'timeout' seconds. If yes,
// then return and call rerun() entry method. That would execute the
// remaining stack.
if(sequentialCurr - sequentialStart > timeout)
{
#ifdef DEBUG
CkPrintf("Timeout in sequential coloring. Stack size=%d\n", stackForSequential.size());
#endif
thisProxy.rerun();
wait = true;
return;
}
stackNode curr_node_ = stackForSequential.top().first;
std::stack<int> removedVertices = stackForSequential.top().second;
stackForSequential.pop(); // remove from stack
// vertex removal step
curr_node_.uncolored_num_ -= curr_node_.vertexRemoval(removedVertices);
// coloring found
if(curr_node_.uncolored_num_==0)
{
solutionFound = true;
curr_node_.mergeRemovedVerticesBack(removedVertices);
result = curr_node_.node_state_;
return;
}
int vIndex = curr_node_.getNextConstrainedVertex();
CkAssert(vIndex!=-1);
// Value Ordering
// temporary stack to invert the priority queue ordering
std::stack<stackNode> tmp;
pq_type priorityColors = curr_node_.getValueOrderingOfColors(vIndex);
while(!priorityColors.empty()){
std::pair<int,int> p = priorityColors.top();
priorityColors.pop();
std::vector<vertex> new_state = curr_node_.node_state_;
CkAssert(p.first < chromaticNum_);
int verticesColored = curr_node_.updateState(new_state, vIndex, p.first, true);
CkAssert(verticesColored >= 1);
tmp.emplace(stackNode(new_state, curr_node_.uncolored_num_ - verticesColored));
}
while(!tmp.empty())
{
stackForSequential.push(std::make_pair(tmp.top(), removedVertices));
tmp.pop();
}
}
}
示例6: CkAssert
/* Coloring clique (i.j,k).
* assign min possible color to i and update its ngh.
* Do the same for j and k.
* While we are doing clique coloring we are also doing
* forced moves (using updateState) which will give
* further improvements.
*/
void Node::colorClique3(int i, int j, int k)
{
if(false == node_state_[i].isColored()) {
boost::dynamic_bitset<> i_possC = node_state_[i].getPossibleColor();
size_t i_color = i_possC.find_first();
CkAssert(i_color != boost::dynamic_bitset<>::npos);
int verticesColored = updateState(node_state_, i, i_color , true);
uncolored_num_ -= verticesColored;
}
if(false == node_state_[j].isColored()) {
boost::dynamic_bitset<> j_possC = node_state_[j].getPossibleColor();
size_t j_color = j_possC.find_first();
CkAssert(j_color != boost::dynamic_bitset<>::npos);
int verticesColored = updateState(node_state_, j, j_color , true);
uncolored_num_ -= verticesColored;
}
if(false == node_state_[k].isColored()) {
boost::dynamic_bitset<> k_possC = node_state_[k].getPossibleColor();
size_t k_color = k_possC.find_first();
CkAssert(k_color != boost::dynamic_bitset<>::npos);
int verticesColored = updateState(node_state_, k, k_color, true );
uncolored_num_ -= verticesColored;
}
}
示例7: ne
/** Adds newElem to node n's element adjacency list
*/
void FEM_Mesh::n2e_add(int n, int newElem)
{
if (n == -1) return;
if(FEM_Is_ghost_index(n)){
FEM_VarIndexAttribute *eAdj = (FEM_VarIndexAttribute *)node.getGhost()->lookup(FEM_NODE_ELEM_ADJACENCY,"n2e_add");
CkVec<CkVec<ElemID> > &eVec = eAdj->get();
CkVec<ElemID> &nsVec = eVec[FEM_To_ghost_index(n)];
ElemID ne(0, newElem);
nsVec.push_back(ne);
int *testn2e, testn2ec;
n2e_getAll(n,testn2e,testn2ec);
for(int i=0; i<testn2ec; i++) {
if(FEM_Is_ghost_index(testn2e[i]))
CkAssert(elem[0].ghost->is_valid(FEM_From_ghost_index(testn2e[i])));
else
CkAssert(elem[0].is_valid(testn2e[i]));
}
if(testn2ec!=0) delete[] testn2e;
}
else {
FEM_VarIndexAttribute *eAdj = (FEM_VarIndexAttribute *)node.lookup(FEM_NODE_ELEM_ADJACENCY,"n2e_add");
CkVec<CkVec<ElemID> > &eVec = eAdj->get();
CkVec<ElemID> &nsVec = eVec[n];
ElemID ne(0, newElem);
nsVec.push_back(ne);
}
}
示例8: CkAssert
/// Update send/recv table at timestamp
void PVT::objUpdate(POSE_TimeType timestamp, int sr)
{
#ifndef CMK_OPTIMIZE
int tstat = localStats->TimerRunning();
if(pose_config.stats){
if (tstat)
localStats->SwitchTimer(GVT_TIMER);
else
localStats->TimerStart(GVT_TIMER);
}
#endif
//if ((timestamp < estGVT) && (estGVT > POSE_UnsetTS))
//CkPrintf("timestamp=%d estGVT=%d simdone=%d sr=%d\n", timestamp,
//estGVT, simdone, sr);
CkAssert(simdone>0 || (timestamp >= estGVT) || (estGVT == POSE_UnsetTS));
CkAssert((sr == SEND) || (sr == RECV));
if ((estGVT > POSE_UnsetTS) &&
((timestamp < iterMin) || (iterMin == POSE_UnsetTS)))
iterMin = timestamp;
if (waitForFirst) {
waitForFirst = 0;
SendsAndRecvs->Restructure(estGVT, timestamp, sr);
}
else SendsAndRecvs->Insert(timestamp, sr);
#ifndef CMK_OPTIMIZE
if(pose_config.stats){
if (tstat)
localStats->SwitchTimer(tstat);
else
localStats->TimerStop();
}
#endif
}
示例9: ElemID
/** Finds oldElem in n's element adjacency list, and replaces it with newElem
*/
void FEM_Mesh::n2e_replace(int n, int oldElem, int newElem)
{
if (n == -1) return;
if(FEM_Is_ghost_index(n)){
FEM_VarIndexAttribute *eAdj = (FEM_VarIndexAttribute *)node.getGhost()->lookup(FEM_NODE_ELEM_ADJACENCY,"n2e_replace");
CkVec<CkVec<ElemID> > &eVec = eAdj->get();
CkVec<ElemID> &nsVec = eVec[FEM_To_ghost_index(n)];
for (int i=0; i<nsVec.length(); i++) {
if (nsVec[i].getSignedId() == oldElem) {
nsVec[i] = ElemID(0,newElem);
break;
}
}
int *testn2e, testn2ec;
n2e_getAll(n,testn2e,testn2ec);
for(int i=0; i<testn2ec; i++) {
if(FEM_Is_ghost_index(testn2e[i]))
CkAssert(elem[0].ghost->is_valid(FEM_From_ghost_index(testn2e[i])));
else
CkAssert(elem[0].is_valid(testn2e[i]));
}
if(testn2ec!=0) delete[] testn2e;
}
else{
FEM_VarIndexAttribute *eAdj = (FEM_VarIndexAttribute *)node.lookup(FEM_NODE_ELEM_ADJACENCY,"n2e_replace");
CkVec<CkVec<ElemID> > &eVec = eAdj->get();
CkVec<ElemID> &nsVec = eVec[n];
for (int i=0; i<nsVec.length(); i++) {
if (nsVec[i].getSignedId() == oldElem) {
nsVec[i] = ElemID(0,newElem);
break;
}
}
}
}
示例10: CkAssert
/// In sequential mode, begin checkpoint after reaching quiescence
void sim::SeqBeginCheckpoint() {
// Ensure this only happens on sim 0
CkAssert(thisIndex == 0);
// Ensure we're checkpointing
CkAssert(seqCheckpointInProgress);
CkPrintf("POSE: quiescence detected\n");
CkPrintf("POSE: beginning checkpoint on sim %d at GVT=%lld sim time=%.1f sec\n", thisIndex, seqLastCheckpointGVT, CmiWallTimer() + seqStartTime);
CkCallback cb(CkIndex_sim::SeqResumeAfterCheckpoint(), CkArrayIndex1D(thisIndex), thisProxy);
CkStartCheckpoint(POSE_CHECKPOINT_DIRECTORY, cb);
}
示例11: GetEventID
const eventID& GetEventID() {
//CpvStaticDeclare(eventID, theEventID); // initializes to [0.pe]
// for each pe called on
CpvAccess(theEventID).incEventID();
CkAssert(CpvAccess(theEventID).getPE()>=0);
return(CpvAccess(theEventID));
}
示例12: CkFreeMsg
/// Start a forward execution step on myStrat after a checkpoint (sequential mode only)
void sim::CheckpointStep(eventMsg *m) {
CkFreeMsg(m);
if (active < 0) return; // object is migrating; deactivate it
#if !CMK_TRACE_DISABLED
int tstat;
if (pose_config.stats) {
tstat = localStats->TimerRunning();
if (!tstat)
localStats->TimerStart(SIM_TIMER);
else localStats->SwitchTimer(SIM_TIMER);
}
#endif
// ensure sequential mode
CkAssert(myStrat->STRAT_T == SEQ_T);
myStrat->Step(); // Call Step on strategy
#if !CMK_TRACE_DISABLED
if (pose_config.stats) {
if (!tstat)
localStats->TimerStop();
else localStats->SwitchTimer(tstat);
}
#endif
}
示例13: nodeID_
/* -----------------------------------------
* This is the node state BEFORE the search is initiated.
* 1. initialize node_state_ with adjList all uncolored
* 2. Does pre-coloring
* ---------------------------------------*/
Node::Node(bool isRoot, int n, CProxy_Node parent) :
nodeID_("0"), parent_(parent), uncolored_num_(n), is_root_(isRoot),
child_num_(0), child_finished_(0),
child_succeed_(0), is_and_node_(false), parentBits(1), parentPtr(NULL)
{
__sdag_init();
programStart = CkTimer();
CkAssert(isRoot);
vertex v = vertex(chromaticNum_);
node_state_ = std::vector<vertex>(vertices_, v);
//preColor();
#ifdef DEBUG
CkPrintf("After Precolor\n");
printGraph();
#endif
int count = uncolored_num_;
uncolored_num_ -= vertexRemoval();
CkPrintf("Vertices removed by vertex removal in [MainChare] = %d\n", count-uncolored_num_);
#ifdef DEBUG
CkPrintf("Vertex Removal\n");
printGraph();
#endif
CProxy_counter(counterGroup).ckLocalBranch()->registerMe(nodeID_);
run();
}
示例14: SayHi
void SayHi(HiMsg *m)
{
redNo ++;
CmiAssert(m->data[0] == 22 && m->data[1] == 28);
CkGetSectionInfo(sid, m);
CkMulticastMgr *mg = CProxy_CkMulticastMgr(mCastGrpId).ckLocalBranch();
int dataSize = (int)(CompleteMsgSize);
int* data = new int [dataSize];
int fragSize = dataSize/NumFrags;
CkAssert (0 != fragSize);
for (int i=0; i<dataSize; i++) {
data [i] = thisIndex;
}
CkCallback cb(CkIndex_Hello::cb_client(NULL), CkArrayIndex1D(0), thisProxy);
mg->contribute(dataSize*sizeof(int), data,CkReduction::sum_int, sid, cb, fragSize*sizeof(int));
// data[0] = thisIndex+2;
// data[1] = thisIndex+2;
// mg->contribute(2*sizeof(int), &data,CkReduction::max_int, sid, sizeof(int));
// data[0] = thisIndex+1;
// data[1] = thisIndex+1;
// mg->contribute(2*sizeof(int), &data,CkReduction::product_int, sid, sizeof(int));
delete m;
if (1)
ckMigrate((CkMyPe()+1)%CkNumPes());
}
示例15: rectRequest
void * rectRequest (int comm) {
// fprintf(stderr,"[%d] rectRequest for %d gives %p\n",CkMyPe(),comm,CkpvAccess(com_rect_ptr)->get(comm));
#ifdef COMLIB_RECT_DEBUG
CkAssert(CkpvAccess(com_rect_ptr)->get(comm)!=NULL);
isSane(CkpvAccess(com_rect_ptr)->get(comm),comm);
#endif
return CkpvAccess(com_rect_ptr)->get(comm);
}