本文整理汇总了C++中CmiPrintf函数的典型用法代码示例。如果您正苦于以下问题:C++ CmiPrintf函数的具体用法?C++ CmiPrintf怎么用?C++ CmiPrintf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CmiPrintf函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: collectNumbers
static void collectNumbers(ProcMsg *msg)
{
int npes;
EmptyMsg emsg;
if(CpvAccess(isSingle)) {
CpvAccess(Time1) = CmiWallTimer() - CpvAccess(Time1);
CpvAccess(seqPI) = 4.0 * msg->success / NTRIALS;
CpvAccess(isSingle) = 0;
CpvAccess(nreported) = 0;
CpvAccess(success) = 0;
msg->success = NTRIALS/CmiNumPes();
CmiSetHandler(msg, CpvAccess(trial_handler));
CmiSyncBroadcastAll(sizeof(ProcMsg), msg);
CpvAccess(TimeN) = CmiWallTimer();
} else {
CpvAccess(nreported)++;
CpvAccess(success) += msg->success;
if(CpvAccess(nreported)==CmiNumPes()) {
CpvAccess(TimeN) = CmiWallTimer() - CpvAccess(TimeN);
CpvAccess(parPI) = 4.0 * CpvAccess(success) / NTRIALS;
npes = iround(CpvAccess(Time1)/CpvAccess(TimeN));
CmiPrintf("[proc] Tseq = %le seconds, Tpar = %le seconds\n",
CpvAccess(Time1), CpvAccess(TimeN));
CmiPrintf("[proc] CmiNumPes() reported %d processors\n", CmiNumPes());
CmiPrintf("[proc] But actual number of processors is %d\n", npes);
CmiPrintf("[proc] FYI, appox PI (seq) = %lf\n",CpvAccess(seqPI));
CmiPrintf("[proc] FYI, appox PI (par) = %lf\n",CpvAccess(parPI));
CmiSetHandler(&emsg, CpvAccess(ack_handler));
CmiSyncSend(0, sizeof(EmptyMsg), &emsg);
}
}
}
示例2: CcsImpl_netRequest
/**
* This is the entrance point of a CCS request into the server.
* It is executed only on proc 0, and it forwards the request to the appropriate PE.
*/
void CcsImpl_netRequest(CcsImplHeader *hdr,const void *reqData)
{
char *msg;
int len,repPE=ChMessageInt(hdr->pe);
if (repPE<=-CmiNumPes() || repPE>=CmiNumPes()) {
#if ! CMK_BIGSIM_CHARM
/*Treat out of bound values as errors. Helps detecting bugs*/
if (repPE==-CmiNumPes()) CmiPrintf("Invalid processor index in CCS request: are you trying to do a broadcast instead?");
else CmiPrintf("Invalid processor index in CCS request.");
CpvAccess(ccsReq)=hdr;
CcsSendReply(0,NULL); /*Send an empty reply to the possibly waiting client*/
return;
#endif
}
msg=CcsImpl_ccs2converse(hdr,reqData,&len);
if (repPE >= 0) {
/* The following %CmiNumPes() follows the assumption that in BigSim the mapping is round-robin */
//CmiPrintf("CCS message received for %d\n",repPE);
CmiSyncSendAndFree(repPE%CmiNumPes(),len,msg);
} else if (repPE == -1) {
/* Broadcast to all processors */
//CmiPrintf("CCS broadcast received\n");
CmiSyncSendAndFree(0,len,msg);
} else {
/* Multicast to -repPE processors, specified right at the beginning of reqData (as a list of pes) */
int firstPE = ChMessageInt(*(ChMessageInt_t*)reqData);
/* The following %CmiNumPes() follows the assumption that in BigSim the mapping is round-robin */
//CmiPrintf("CCS multicast received\n");
CmiSyncSendAndFree(firstPE%CmiNumPes(),len,msg);
}
}
示例3: cb_client
void cb_client(CkReductionMsg *msg)
{
endTime = CkWallTimer ();
int dataSize = msg->getSize();
void *data = msg->getData();
CmiPrintf("%e\n", endTime-startTime);
// check correctness
int result;
int redno = msg->getRedNo();
result = 0;
for (int i=0; i<sectionSize; i++) result+=i;
if (*(int *)data != result) {
CmiPrintf("Expected: %d acual:%d\n", result, *(int *)data);
CmiAbort("reduction result is wrong!");
}
cnt.reductionsRemaining--;
if (cnt.reductionsRemaining<=0) {
CProxy_main mproxy(mid);
mproxy.maindone();
cnt.reductionNo++;
}
else {
HiMsg *hiMsg = new (2, 0) HiMsg;
hiMsg->data[0] = 22;
hiMsg->data[1] = 28;
startTime = CkWallTimer ();
mcp.SayHi(hiMsg);
cnt.reductionNo++;
}
delete msg;
}
示例4: CmiPrintf
void LBDB::DumpDatabase()
{
#ifdef DEBUG
CmiPrintf("Database contains %d object managers\n",omCount);
CmiPrintf("Database contains %d objects\n",objCount);
#endif
}
示例5: displayLBs
void displayLBs()
{
CmiPrintf("\nAvailable load balancers:\n");
for (int i=0; i<lbtables.length(); i++) {
LBDBEntry &entry = lbtables[i];
if (entry.shown) CmiPrintf("* %s: %s\n", entry.name, entry.help);
}
CmiPrintf("\n");
}
示例6: computeAverage
int RefinerTemp::multirefine()
{
computeAverage();
double avg = averageLoad;
int maxPe=-1;
// double max = computeMax();
double max = computeMax(&maxPe);
//const double overloadStep = 0.01;
const double overloadStep = 0.01;
const double overloadStart = 1.001;
// double dCurOverload = max / avg;
double dCurOverload = max /(totalInst*procFreqNew[maxPe]/sumFreqs);
int minOverload = 0;
int maxOverload = (int)((dCurOverload - overloadStart)/overloadStep + 1);
double dMinOverload = minOverload * overloadStep + overloadStart;
double dMaxOverload = maxOverload * overloadStep + overloadStart;
int curOverload;
int refineDone = 0;
//CmiPrintf("maxPe=%d max=%f myAvg=%f dMinOverload: %f dMaxOverload: %f\n",maxPe,max,(totalInst*procFreqNew[maxPe]/sumFreqs), dMinOverload, dMaxOverload);
if (_lb_args.debug()>=1)
CmiPrintf("dMinOverload: %f dMaxOverload: %f\n", dMinOverload, dMaxOverload);
overLoad = dMinOverload;
if (refine())
refineDone = 1;
else {
overLoad = dMaxOverload;
if (!refine()) {
CmiPrintf("ERROR: Could not refine at max overload\n");
refineDone = 1;
}
}
// Scan up, until we find a refine that works
while (!refineDone) {
if (maxOverload - minOverload <= 1)
refineDone = 1;
else {
curOverload = (maxOverload + minOverload ) / 2;
overLoad = curOverload * overloadStep + overloadStart;
if (_lb_args.debug()>=1)
CmiPrintf("Testing curOverload %d = %f [min,max]= %d, %d\n", curOverload, overLoad, minOverload, maxOverload);
if (refine())
maxOverload = curOverload;
else
minOverload = curOverload;
}
}
return 1;
}
示例7: vars_check_cpv_and_csv
CpmInvokable vars_check_cpv_and_csv(vars_chare c)
{
if (CpvAccess(cpv1) != CmiMyPe()) {
CmiPrintf("cpv privacy test failed.\n");
exit(1);
}
if (CsvAccess(csv1) != 0x12345678) {
CmiPrintf("csv sharing test failed.\n");
exit(1);
}
Cpm_vars_ack(CpmSend(0), c);
}
示例8: CmiPoolPrintList
void CmiPoolPrintList(char *p)
{
CmiPrintf("Free list is: -----------\n");
while (p != 0) {
char ** header = (char **) p-CMI_POOL_HEADER_SIZE;
CmiPrintf("next ptr is %p. ", p);
CmiPrintf("header is at: %p, and contains: %p \n", header, *header);
p = *header;
}
CmiPrintf("End of Free list: -----------\n");
}
示例9: setVal
void OrbLB::quicksort(int x)
{
int y = (x+1)%3;
int z = (x+2)%3;
setVal(x, y, z);
qsort(x, 0, nObjs-1);
#if 0
CmiPrintf("result for :%d\n", x);
for (int i=0; i<nObjs; i++)
CmiPrintf("%d ", computeLoad[vArray[x][i].id].tv);
CmiPrintf("\n");
#endif
}
示例10: CpdList_ccs_list_items_set
static void CpdList_ccs_list_items_set(char *msg)
{
CpdListItemsRequest req;
CpdListAccessor *acc=CpdListHeader_ccs_list_items(msg,req);
if(acc == NULL) CmiPrintf("ccs-builtins> Null Accessor--bad list name (set)\n");
else {
PUP_toNetwork_unpack p(req.extra);
pupCpd(p,acc,req);
if (p.size()!=req.extraLen)
CmiPrintf("Size mismatch during ccs_list_items.set: client sent %d bytes, but %d bytes used!\n",
req.extraLen,p.size());
}
CmiFree(msg);
}
示例11: mymain
CmiStartFn mymain(int argc, char** argv)
{
if(CmiMyRank() == CmiMyNodeSize()) return 0;
CpvInitialize(int,msgSize);
CpvInitialize(int,cycleNum);
CpvInitialize(int,sizeNum);
CpvAccess(sizeNum) = 1;
CpvAccess(msgSize)= CmiMsgHeaderSizeBytes + 8;
CpvInitialize(int,exitHandler);
CpvAccess(exitHandler) = CmiRegisterHandler((CmiHandler) exitHandlerFunc);
CpvInitialize(int,node0Handler);
CpvAccess(node0Handler) = CmiRegisterHandler((CmiHandler) node0HandlerFunc);
CpvInitialize(int,node1Handler);
CpvAccess(node1Handler) = CmiRegisterHandler((CmiHandler) node1HandlerFunc);
CpvInitialize(int,ackHandler);
CpvAccess(ackHandler) = CmiRegisterHandler((CmiHandler) ackHandlerFunc);
CpvInitialize(double,startTime);
CpvInitialize(double,endTime);
CpvInitialize(double, IdleStartTime);
CpvInitialize(double, IdleTime);
CpvInitialize(int,ackCount);
CpvAccess(ackCount) = 0;
CpvInitialize(int,twoway);
CpvAccess(twoway) = 0;
CcdCallOnConditionKeep(CcdPROCESSOR_BEGIN_IDLE, ApplIdleStart, NULL);
CcdCallOnConditionKeep(CcdPROCESSOR_END_IDLE, ApplIdleEnd, NULL);
if(argc > 1)
CpvAccess(twoway) = atoi(argv[1]);
if(CmiMyPe() == 0) {
if(!CpvAccess(twoway))
CmiPrintf("Starting Pingpong with oneway traffic \n");
else
CmiPrintf("Starting Pingpong with twoway traffic\n");
}
if ((CmiMyPe() < CmiNumPes()/2) || CpvAccess(twoway))
startPingpong();
return 0;
}
示例12: cb_client
// void cb_client(CkSectionInfo sid, void *param, int dataSize, void *data)
void cb_client(CkReductionMsg *msg)
{
int dataSize = msg->getSize();
void *data = msg->getData();
CmiPrintf("RESULT [%d]: %d\n", cnt.reductionNo, *(int *)data);
// check correctness
int result;
int redno = msg->getRedNo();
if (redno%3 == 0) {
result = 0;
for (int i=0; i<sectionSize; i++) result+=i;
}
else if (redno%3 == 2) {
result = 1;
for (int i=1; i<sectionSize+1; i++) result*=i;
}
else {
result = sectionSize+1;
}
if (*(int *)data != result) {
CmiPrintf("Expected: %d acual:%d\n", result, *(int *)data);
CmiAbort("reduction result is wrong!");
}
cnt.reductionsRemaining--;
if (cnt.reductionsRemaining<=0) {
CProxy_main mproxy(mid);
mproxy.maindone();
cnt.reductionNo++;
}
else {
#if 0
CkMulticastMgr *mg = CProxy_CkMulticastMgr(mCastGrpId).ckLocalBranch();
if (cnt->reductionNo % 32 == 0)
mg->rebuild(mcp.ckGetSectionInfo());
#endif
if (cnt.reductionNo%3 == 0) {
HiMsg *hiMsg = new (2, 0) HiMsg;
//hiMsg->data[0] = 18+cnt.reductionNo;
hiMsg->data[0] = 22;
hiMsg->data[1] = 28;
mcp.SayHi(hiMsg);
}
cnt.reductionNo++;
}
delete msg;
}
示例13: CmiPrintf
void OrbLB::setVal(int x, int y, int z)
{
int i;
for (i=0; i<nObjs; i++) {
computeLoad[i].tv = 1000000.0*computeLoad[i].v[x]+
1000.0*computeLoad[i].v[y]+
computeLoad[i].v[z];
}
#if 0
CmiPrintf("original:%d\n", x);
for (i=0; i<numComputes; i++)
CmiPrintf("%d ", computeLoad[i].tv);
CmiPrintf("\n");
#endif
}
示例14: CmiPrintf
void LBSimulation::PrintDifferences(LBSimulation *realSim, BaseLB::LDStats *stats)
{
LBRealType *peLoads = lbinfo.peLoads;
LBRealType *realPeLoads = realSim->lbinfo.peLoads;
// the number of procs during the simulation and the real execution must be checked by the caller!
int i;
// here to print the differences between the predicted (this) and the real (real)
CmiPrintf("Differences between predicted and real balance:\n");
CmiPrintf("PE (Predicted Load) (Real Predicted) (Difference) (Real CPU) (Prediction Error)\n");
for(i = 0; i < numPes; ++i) {
CmiPrintf("%-4d %13f %16f %15f %12f %14f\n", i, peLoads[i], realPeLoads[i], peLoads[i]-realPeLoads[i],
stats->procs[i].total_walltime-stats->procs[i].idletime, realPeLoads[i]-(stats->procs[i].total_walltime-stats->procs[i].idletime));
}
}
示例15: DEBUGF
//! turn trace on/off, note that charm will automatically call traceBegin()
//! at the beginning of every run unless the command line option "+traceoff"
//! is specified
void TraceCounter::traceEnd() {
DEBUGF(("%d/%d traceEnd called\n", CmiMyPe(), CmiNumPes()));
if (!traceOn_) {
static bool print = true;
if (print) {
print = false;
if (CmiMyPe()==0) {
CmiPrintf("%d/%d WARN: traceEnd called but trace not on!\n"
" Sure you didn't mean to use +traceoff?\n",
CmiMyPe(), CmiNumPes());
}
}
}
else {
traceOn_ = false;
dirty_ = false;
if (overview_) { endOverview(); } // overview switches counters automatic
else if (switchByPhase_) { switchCounters(); };
if (!noLog_ && writeByPhase_) {
if (CmiMyPe()==0) { CpvAccess(_logPool)->writeSts(phase_); }
CpvAccess(_logPool)->write(phase_);
}
reductionPhase_++;
CpvAccess(_logPool)->doReduction(reductionPhase_, idleTime_);
if (writeByPhase_) {
idleTime_ = 0.0;
CpvAccess(_logPool)->clearEps();
}
// setTrace must go after the writes otherwise the writes won't go through
DEBUGF(("%d/%d DEBUG: Created _logPool at %08x\n",
CmiMyPe(), CmiNumPes(), CpvAccess(_logPool)));
}
}