/* **++ ** ROUTINE: sp_show_subprocess ** ** FUNCTIONAL DESCRIPTION: ** ** Uses $GETJPI to get info on the subprocess and ** displays it à la CTRL/T. ** ** RETURNS: cond_value, longword (unsigned), write only, by value ** ** PROTOTYPE: ** ** sp_show_subprocess(SPHANDLE ctx) ** ** IMPLICIT INPUTS: None. ** ** IMPLICIT OUTPUTS: None. ** ** COMPLETION CODES: ** ** ** SIDE EFFECTS: None. ** **-- */ unsigned int sp_show_subprocess (SPHANDLE ctx) { static $DESCRIPTOR(ctrstr, "<<!AD!AD !8%T !9AD CPU=!%T PF=!UL IO=!UL MEM=!UL>>"); static int neg10000 = -10000; static int zero = 0; struct dsc$descriptor bufdsc; struct { unsigned short len, code; char *ptr; unsigned int term; } fscnlst = {0, FSCN$_NAME, 0, 0}; ITMLST jpilst[8]; char nodename[33], buf[256]; char prcnam[16], imgnam[256]; unsigned short prcnamlen, imgnamlen, iosb[4], buflen; unsigned int cputim[2], xcputim; unsigned int pageflts, biocnt, diocnt, wssize; unsigned int status; if (!get_logical("SYS$NODE", nodename, sizeof(nodename))) nodename[0] = '\0'; ITMLST_INIT(jpilst[0], JPI$_PRCNAM, sizeof(prcnam), prcnam, &prcnamlen); ITMLST_INIT(jpilst[1], JPI$_IMAGNAME, sizeof(imgnam), imgnam, &imgnamlen); ITMLST_INIT(jpilst[2], JPI$_CPUTIM, sizeof(xcputim), &xcputim, 0); ITMLST_INIT(jpilst[3], JPI$_PAGEFLTS, sizeof(pageflts), &pageflts, 0); ITMLST_INIT(jpilst[4], JPI$_DIOCNT, sizeof(diocnt), &diocnt, 0); ITMLST_INIT(jpilst[5], JPI$_BIOCNT, sizeof(biocnt), &biocnt, 0); ITMLST_INIT(jpilst[6], JPI$_WSSIZE, sizeof(wssize), &wssize, 0); ITMLST_INIT(jpilst[7], 0, 0, 0, 0); status = sys$getjpiw(0, &ctx->pid, 0, jpilst, iosb, 0, 0); if (OK(status)) status = iosb[0]; if (!OK(status)) return SS$_NORMAL; while (imgnamlen > 0 && isspace(imgnam[imgnamlen-1])) imgnamlen--; if (imgnamlen > 0) { INIT_SDESC(bufdsc, imgnamlen, imgnam); status = sys$filescan(&bufdsc, &fscnlst, 0); if (!OK(status)) { fscnlst.ptr = imgnam; fscnlst.len = imgnamlen; } } else { strcpy(imgnam, " (DCL)"); imgnamlen = 7; } lib$emul(&neg10000, &xcputim, &zero, cputim); INIT_SDESC(bufdsc, sizeof(buf), buf); status = sys$fao(&ctrstr, &buflen, &bufdsc, strlen(nodename), nodename, prcnamlen, prcnam, 0, fscnlst.len, fscnlst.ptr, cputim, pageflts, diocnt+biocnt, wssize); if (OK(status)) { bufdsc.dsc$w_length = buflen; lib$put_output(&bufdsc); } return SS$_NORMAL; } /* sp_show_subprocess */
int main() { FAO fao("FAO.txt"); try{ std::cout << fao.Compute() << std::endl; } catch (std::exception & e){ std::cout << e.what() << std::endl; } return 0; }
void FactorAdditionOp::execute() { if (_generalFactors.size() == 2) { if (_intendedStorageType == EVAL) { _generalTarget->setStorageType(EVAL); return; } else if (_intendedStorageType == SPARSE) { /* TODO: test this */ #if 0 vector<int> vars = _generalTarget->getOrderedVars(); drwnSparseFactor *fac1 = _A->getSparseFactor(); drwnSparseFactor *fac2 = _B->getSparseFactor(); drwnSparseFactor *target = _generalTarget->getSparseFactor(); map<vector<int>, double> assignmtsA = fac1->getAssignments(); map<vector<int>, double> assignmtsB = fac2->getAssignments(); for (map< vector<int>, double >::iterator mi = assignmtsA.begin(); mi != assignmtsA.end(); mi++) { vector<int> vals(vars.size()); for (int i = 0; i < vars.size(); i++) { vals[_targetToA[i]] = (*mi).first[_targetToA[i]]; } drwnPartialAssignment dpa; target->setValueOf(dpa, (*mi).second); } for (map< vector<int>, double >::iterator mi = assignmtsB.begin(); mi != assignmtsA.end(); mi++) { vector<int> vals(vars.size()); for (int i = 0; i < vars.size(); i++) { vals[_targetToB[i]] = (*mi).first[_targetToB[i]]; } drwnPartialAssignment dpa; target->setValueOf(dpa, target->getValueOf(dpa) + (*mi).second); } #endif return; } /* dealing with dense factors */ drwnTableFactor *target = _generalTarget->getTableFactor(); drwnFactorAdditionOp dfao(target, _generalFactors[0]->getTableFactor(), _generalFactors[1]->getTableFactor()); dfao.execute(); _generalTarget = new drwnGeneralFactor(*target, _generalTarget->THRESHOLD); return; } drwnGeneralFactor *prevSum = _generalFactors.front()->clone(); for (int fi = 1; fi < _generalFactors.size(); fi++) { drwnTableFactor tf(_generalTarget->getUniverse()); drwnGeneralFactor *partSum = (fi == (_generalFactors.size() - 1)) ? _generalTarget : new drwnGeneralFactor(tf, _generalTarget->THRESHOLD); FactorAdditionOp fao(partSum, prevSum, _generalFactors[fi]); fao.execute(); prevSum = partSum; } }