$ Զ@__text__TEXT]@Ļ__bss__DATAP__data__DATA]c__cstring__TEXT] c__gcc_except_tab__DATAxv(~__textcoal_nt__TEXT`~s @__const__DATA`, __StaticInit__TEXT̑+__datacoal_nt__DATA@< @__mod_init_func__DATAT __mod_term_func__DATAX __eh_frame__TEXT\ h__picsymbolstub2__TEXT,ll__la_sym_ptr2__DATAƳL/__nl_symbol_ptr__DATApT__constructor__TEXTĻ__destructor__TEXTĻ:LA PDDHE4YUEfEEfEEÐUEȉEEÐU(E EEEE$EE$EEÐU(E EfEE$qU(E EEE$pÐU(E EEEEEEE$?EE$1EEÐU(EfEE$‹E EfÐUE$‹E EÐUE$‹E EÐUÐUE D$E$ÐUE D$E$ÐUE D$E$ÐU(EfEED$E D$E$ ÐUED$E D$E$ ÐUED$E D$E$ ÐUE EUE EUE EUEfEE UEfÐUE U‹EÐUE U‹EÐUEfEEÐUEÐUEÐUEfEEÐUEÐUEÐUED$E D$E$)ÐUED$E D$E$ÐUVS0ED$E D$E$'UoZ@E$ED$E$ïEuE$藯uXE$臯8t1kZsZ$JkZD$Z$0EǀuE$uE$躮0[^]ÐUD$E$;ÐUD$E$ÐUD$E$ÐUVS SU/Y@ӱ8t1+Y(cY$h+YD$OY$NE$%EuE$uE$ҭE$E t E$虭 [^]ÐUVS8tX$ʭE$BtX$譭E 0YD$E؉$UEE׉D$T$E $ЉE+E؉$覬$E؉$臬EED$E$Љu Dž4D$ D$D$$E썃YD$E؉$U؉E-EE-E$ЋT$$腫+E؉$蘫$E؉$y_Eu}$ $oTt$} tE -E P DžPPD$T$ D$D$T$ҠE$|$舡E$]ZD$$LE-EE-E$ЋLT$$肠K.$蒠$$pKtE$臝EE-EE-E$Љ$豝ƋE$苝‰t$ZD$$ZE$h$號Dt$} tE -E @ Dž@@T$D$7D$D$D$EED$E$ЍEVe[^]US$(8tM$֟EUE;rwE$EE$EED$E$踛u.E$莛$D$E$T맍Ey$[]ÐUSl8tmL$E$蒞tL$EuLD$E $šE D$E$藚LD$E $蛚[]ÐUSXء8tkL$膞E$tL$iEuLD$E $.E D$E$iLD$E $[]ÐUVS0C8tL$E$itL$ԝELD$E $蕙E$谛$菛x]uCMD$E $glMD$E$ќEEE$b$A|UT$$[EE܋u܍E$wu܋E܉$͜E$^}tMD$E $ؘMD$E $KD$E $謘"ED$#ND$E $舘E D$E$+KD$E $a0[^]ÐUWVS,8tL$EE<E$譛tL$LD$E $E${kE$$_$>D$M$ÛE$ę$2$D$M$蓛E$蔙$$ޖD$7N$cE$d$Җ $讖D$M$3E$4$袖$~D$wN$uȋE$$oD$4$1EȉD$E$uȋE$ʘ$8D$4$EȉD$Eĉ$ɕuȋE$萘$D$4$轕EȉD$E$菕uȋE$V$ĕ D$4$胕EȉD$E$UuȋE$$芕D$4$IEȉD$E$N$֙EE$З$>$9Er@E$$蟔D$N$舙D$E$aE랍N$_EE$Y$ǔ$裔9Er@Eĉ$F$%D$N$D$Eĉ$E뛍N$EE$ߖ$M$)9Er@E$̓$諓D$N$蔘D$E$mE뛍7O$kEE$e$ӓ $诓9Er@E$R$1D$N$D$E$E뛍wO$EE$$Y$59Er@E$ؒ$跒D$N$蠗D$E$yE뛋E$膕$$ӒuOD$E $7 E$M$軒$蚒 OD$E $uȋE$$耒D$4$BEȉD$E$uȋE$۔$I D$4$EȉD$E$ڑuȋE$衔$D$4$ΑEȉD$E$蠑wPD$E $:EE$N$輑$蛑9ErvE$>$ƍE$)$t$ D$PD$E $̑D$E$运D$E$謐EhPD$E $膑uȋE$螓$  D$4$ːEȉD$E$蝐EEEE$Z$Ȑ $褐9ErGE$G$&D$JQD$E $D$E$E딍NQD$E $辐E$ْ$踒$蚑D$WQD$E $臐uȋE$蟒$  D$4$̏EȉD$E$螏EEuȋE$_$͏D$4$茏EȉD$Eĉ$^EE$!$菏$n9ErvEĉ$$ƍE$$ێt$ D$QD$E $蟏D$E$蒎D$Eĉ$EhQD$E $YuȋE$q$ߎD$4$衎EȉD$E$sEEuȋE$4$袎 D$4$aEȉD$E$3EEuȋE$$bD$4$!EȉD$E$EEčuȋE$贐$"D$4$EȉD$E$賍EE$v$$Í9ErE$c$BLEĉ$J$)ǍE$5$ƍE$ $LT$|$t$ D$7RD$E $赍D$E$訌D$E$蕌D$Eĉ$肌D$E$oE\RD$E $IuȋE$a$όD$4$葌EȉD$E$cEEuȋE$$$蒌 D$4$QEȉD$E$#EEuȋE$$RD$4$EȉD$E$EEEE$蠎$$9ErE$荋$lD$iRD$E $4E$wRD$$tFE$>$D$|RD$E $RD$E $ЋE$譊RD$$耊tCE$Պ$贊D$RD$E $|RD$E $gdE$GRD$$tAE$o$ND$RD$E $RD$E $D$E$D$E$D$E$ΉE8E$،$跌$虋D$RD$E $膊uȋE$螌$  D$4$ˉEȉD$E$蝉EEuȋE$^$̉D$4$苉EȉD$E$]EEEE$$舉$g9ErvEĉ$ $ƍE$$Ԉt$ D$QD$E $蘉D$E$苈D$Eĉ$xEhQD$E $RuȋE$j$؈D$4$蚈EȉD$E$lEEuȋE$-$蛈 D$4$ZEȉD$E$,EEuȋE$$[D$4$EȉD$E$EEčuȋE$譊$D$4$ڇEȉD$|$詇|EEE$c$ч$谇9ErE$P$/HEĉ$7$ǍE$"$ƍE$ $HT$|$t$ D$7RD$E $袇D$E$蕆D$E$肆D$Eĉ$oD$E$\EpSD$E $6SD$E $(JD$E $ E$%$tSD$E $نE$$ӈx]tTD$E $諆TD$E $薆E$豈$萈xP~UD$E $h4UD$E $S(JD$E $>E$Y$8E$@$̈́‰t$ ƅ{{D$E D$$莄E$$E$$I‰t$ ƅzzD$E D$$ E$赇$蔇tEE$虇$xx]tWUD$E $PUD$E $9E$T$3p]E$=$@T4!UD$E $h$|hD$Eȉ$N.DDh$DD$ch$E$衆$.EȉD$$蹂hEȉD$$(hD$E$shEȉD$$EhD$E$SuCE$@E$ $薂ED$@D$$賁u<$ІƍWVD$4$vD$D$4$nE$6uVd VdE$$=`D$XD$E $~`D$XD$E $~(JD$E $~`ƅ'KD$h$ h E$蘀$w| T$$莁tiE$l$Kx]tPE$S$2xTt7ƅ'.DDh$gDD$跁h$E'|E$$E$$xX~XD$E $}7YD$E $h}(JD$E $S}iYD$E $>}(JD$E $)}ZE$B$!xX~YD$E $|YD$E $|(JD$E $|E$~$~E$~$~@`D$YD$E $~|E$~$x~@dD$ZD$E $O|+ZD$E $:|:ZD$E $%|IZD$E $|XZD$E ${gZD$E ${xZD$E ${nE$}$}@`D$ZD$E ${ZD$E ${ZD$E $v{ZD$E $a{E$|}$[}xX~ZD$E $3{ZD$E ${[D$E ${E$"}$}t[D$E $z[D$E $zE$|$|6E$|$|@`D$\D$E $rzE$|$l|@dD$.\D$E $CzG\D$E $.zY\D$E $zk\D$E $z}\D$E $y\D$E $y\D$E $yE${${xX~\D$E $y7]D$E $ym]D$E $ky]D$E $VyE$l{$K{ E$L{$+{xX~GE$3{${x]tXD$E $x|]D$E $xeE$z$zp]E$z$z@T4!t]D$E $x7YD$E $lx(JD$E $WxiYD$E $Bx(JD$E $-xE$Cz$"zxX~GE$*z$ zx]tYD$E $w|8^D$E $weE$y$yp]E$y$y@T4!tW^D$E $zwYD$E $cw(JD$E $NwE$iy$Hyx]t^D$E $ w^D$E $ w(JD$E $vE$y$x^E$x$xxX~GE$x$xx]t^D$E $v|^D$E $vveE$x$nxp]E$xx$Wx@T4!t7_D$E $&v_D$E $v(JD$E $u_D$E $u(JD$E $uE$w$wx]t^D$E $u^D$E $u(JD$E $vuE$w$pwp]E$zw$Yw@T!4_D$E $)u_D$E $u(JD$E $tDž`E$w$ks$7r9`r`D$ `D$`D$E $tW`D$E $t(JD$E $zt`D$`D$E $[t(JD$E $Ft`D$E $1t`D$7aD$E $t(JD$E $sE$v$uxX~}`D$waD$E $s(JD$E $s`D$E $s`D$aD$E $|s(JD$E $gsE$u$au`D$bD$E $(s(JD$E $s`D$E $r`D$wbD$E $r(JD$E $rE$t$txX~}`D$bD$E $r(JD$E $}r`D$E $hr`D$cD$E $Ir(JD$E $4rDcD$E $r(JD$E $ r`KD$h$huhE$s$s|T$$t.DDh$tDD$Iuh$ttwcD$E $NqcD$E $9qcD$E $$q(JD$E $qE$%s$sx]tAcD$E $pcD$E $p(JD$E $p*cD$E $p(JD$E $pE$r$rtoE$r$drx]t,cD$E $kD$E $'kD$E $kE$-m$ mtD$E $jD$E $jD$E $jE$l$ltWD$E $jD$E $mjD$E $XjE$sl$Rlt7D$E $'jD$E $jE$-l$ ltD$E $iD$E $iE$k$ktD$E $iwD$E $iE$k$kt7D$E $Ui7D$E $@iE$[k$:ktW D$E $i D$E $h7D$E $hE$j$jt7D$E $hD$E $hD$E $hE$j$jtD$E $UhWD$E $@hE$[j$:jt7D$E $h#D$E $gE$j$it&D$E $g'D$E $gE$i$itw(D$E $g)D$E $ngE$i$hit4D$E $=g6D$E $&g6D$E $gE$,i$ itWBD$E $fID$E $fx\D$E $fE$h$hx]u\D$E $fKD$h$ihE$zh$Yh|T$$pi.DDh$iDD$ih$^it\D$E $e\D$E $e(JD$E $eE$fEE$e\\D$E$eu5E$e E D$$D$E$Ke뚋E$Kg$*gxTƅKD$h$xhhE$g$f|T$$gtE$f$fx]u7ƅ.DDh$gDD$;hh$g2E$lf$KfZE$Lf$+fx]t`E$3f$f@`D$YD$E $cE$f$e@dD$ZD$E $c^E$e$e@`D$\D$E $cE$e$e@dD$ ]D$E $Zc+ZD$E $Ec:ZD$E $0cIZD$E $cXZD$E $cgZD$E $bxZD$E $bE$d$dx]t1E$d$d@`D$ZD$E $b/E$d$d@`D$]D$E $^bZD$E $IbZD$E $4bZD$E $bƅKD$h$ehE$d$c|T$$etiE$c$cxTtPE$c$cx]t7ƅ.DDh$dDD$.eh$dt;7]D$E $3aY]`[]D$E $aE$(c$cxX~hE$c$bx]tw]D$E $`]D$E $`Y]`[]D$E $` R`(JD$E $k`E$b$eb $GaD$ `D$]D$E $*`(JD$E $`E$0b$^‹ `D$E D$$DždE$a$O^$]9drdD$ `D$]D$E $_E$a$]dD$$\$\E$qa$Pap]E$Za$9a@T4! t)dD$ `D$^D$E $^d (JD$E $^E$`$w]‹`D$E D$$6[ƅKD$h$bhE$`$p`|T$$atiE$e`$D`xTtPE$L`$+`x]t7ƅ.DDh$`aDD$ah$>at8E$_$_xX~`D$7^D$E $]E$]EE$]XXD$E$]uKE$s]D$ `D$`^D$E $]D$E$]넍(JD$E $\DždE$^$X[$$Z9dr4dD$ `D$s^D$E $\dƅKD$h$_hE$y^$X^|T$$o_tiE$M^$,^xTtPE$4^$^x]t7ƅ.DDh$H_DD$_h$&_t^D$E $[.E$]$]xX~^D$E $m[dD$E $X[(JD$E $C[E$^t^$;_^D$E $ [ED$^D$E $Z(JD$E $Zx\D$E $ZED$7_D$E $ZE$ [EE$ZTTD$E$Zu5E$Z E D$$D$E$@Z뚋ED$w_D$E $ZE$pZEE$DZPPD$E$ZuAE$YD$_D$E $YD$E$Y뎍^D$E $iYdD$E $TY(JD$E $?YE D$E$U(JD$E $Ye[^_]ÐUS4ԩT`8tt $]$?UEEE$g\EEEE$ZUT$D$E$譬EE+E؋U؉U܀}t E$4\U܉U؋E؉$<\ED$E$TEEED$E$oTE4[]ÐUSDx_8t$&\$cTEEE$[EEE؋E$ZU؉T$D$E$SUU}tU UUEEE+EЋUЉUԀ}t E$3[UԉUЋEЉ$;[ED$E$SEEED$E$nSED[]ÐUSDx^8t$&[$cSEEE$ZEEE؋E$YU؉T$D$E$RUU}tU UUEEE+EЋUЉUԀ}t E$3ZUԉUЋEЉ$;ZED$E$REEED$E$nRED[]ÐUSDx]8tX$&Z$cREEE$YEEE؋E$XU؉T$D$E$QUU}tU UUEEE+EЋUЉUԀ}t E$3YUԉUЋEЉ$;YED$E$QEEED$E$nQED[]ÐUSDx\8t$&Y$cQEEE$XEEE؋E$WU؉T$D$E$PUU}tU UUEEE+EЋUЉUԀ}t E$3XUԉUЋEЉ$;XED$E$PEEED$E$nPED[]ÐUSDx[8t$&X$cPEEE$WEEE؋E$VU؉T$D$E$xOUU}tU UUEEE+EЋUЉUԀ}t E$3WUԉUЋEЉ$;WED$E$OEEED$E$nOED[]ÐUSDxZ8t$&W$cOEEE$VEEE؋E$UU؉T$D$E$_NUU}tU UUEEE+EЋUЉUԀ}t E$3VUԉUЋEЉ$;VED$E$NEEED$E$nNED[]ÐUS4xY8tX$&V$DcNEEE$UEEEE$TUT$D$E$FMEE+E؋U؉U܀}t E$XUU܉U؋E؉$`UED$E$MEEED$E$ME4[]Ð`xmdsSequence::xmdsSequence nxmdsSequences=%li xmdsSequence::~xmdsSequence xmdsSequence::processElement Processing sequence element ... *cyclesCannot have cycles in top level sequenceinvalid positive integer formatsequenceintegratealgorithmAlgorithm defaulting to SIEX. SIEXAlgorithm defaulting to RK4EX. RK4EXRK4IPARK45IPARK45EXSIIPIntegrate algorithm '%s' unknown. Current algorithms are SIEX, SIIP, ARK45IP, ARK45EX, RK4EX, and RK4IP.filtersegment <%s> unknownxmdsSequence::outputSampleCount xmdsSequence::writeDefines Writing sequence defines ... // ******************************************************** // segment defines xmdsSequence::writeGlobals Writing sequence globals ... // ******************************************************** // segment globals xmdsSequence::writePrototypes Writing sequence prototypes ... // ******************************************************** // segment prototypes void _segment0(); // top level sequence Schedulingvoid _segment0(const int); /*top level sequence*/ void _segment0(const int& size); // top level sequence void _segment%li(unsigned long cycle); // sequence xmdsSequence::writeRoutines Writing main routine ... // ******************************************************** // main routine // ******************************************************** // ************************* argStruct()->nameList.size() = %i argStruct()->typeList.size() = %i argStruct()->defaultValueList.size() = %i argStruct()->typeConversionList.size() = %i argvStruct()->nameList = %s argvStruct()->typeList = argvStruct()->defaultValueList = argvStruct()->shortOptionList = argvStruct()->typeConversionList = int main(int argc, char *argv[]) { int main(int argc, char **argv) { int resp; while (1) { static struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"%s", required_argument, 0,'%s'}, {0, 0, 0, 0} }; int option_index = 0; resp = getopt_xmds_long(argc, argv, "%s:h", long_options, &option_index); if (resp == -1) { break; } switch (resp) { case 'h': printf("Usage: %s -%s < %s>\n\n"); printf("Details:\n"); printf("Option\t\tType\t\tDefault value\n"); printf("-%s, --%s\t%s\t\t%s\n"); exit(0); case '%s': atof %s = atof(optarg); break; atoi %s = atoi(optarg); %s = optarg; default: exit(10); } } if (optind_xmds < argc) { printf("Sorry, I didn't understand some (or all) of your arguments\n"); printf("Usage: %s exit(0); } int main() { #ifndef CPU_IS_BIG_ENDIAN #ifndef CPU_IS_LITTLE_ENDIAN cout << "Byte ordering isn't defined for this system!\n"; cout << "Please define CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in config.h\n"; exit(255); #endif #endif MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* set up fftw plans */ int fftw_threads_init(void); int _fftw_lattice[64]; double startTime = MPI_Wtime(); time_t startTime = time(NULL); fftwnd_mpi_local_sizes(_main_forward_plan, &local_nx, &local_x_start, &local_ny_after_transpose, &local_y_start_after_transpose, &total_local_size); Lost one of the vectors in xmdssequence::writeRoutines. Bad! Bad dog! doublecomplex_%s_%s = new %s[total_local_size*_%s_%s_ncomponents]; _%s_%s_work = new %s[total_local_size*_%s_%s_ncomponents]; _mg%li_raw = new %s[_mg%li_size*_mg%li_raw_ncomponents]; _mg%li_fullstep = new double[_mg%li_size*_mg%li_fullstep_ncomponents]; _mg%li_halfstep = new double[_mg%li_size*_mg%li_halfstep_ncomponents]; _mg%li_fullstep_initialise(); _mg%li_fullstep_sd_initialise(); _mg%li_halfstep_initialise(); _mg%li_halfstep_sd_initialise(); printf("Rank[%%i] beginning full step paths\n",rank); printf("Beginning full step integration ...\n"); _half_step=0; printf("Rank[%%i] beginning paths\n",rank); printf("Beginning integration ...\n"); _gen1[0] = %li+rank; _gen2[0] = %li+rank; _gen1[1] = 0; _gen2[1] = 0; _gen1[2] = 0; _gen2[2] = 0; erand48(_gen1); erand48(_gen2); _gen[0] = %li+rank; _gen[1] = 0; _gen[2] = 0; erand48(_gen); total_paths = _n_paths; total_paths = 1; //Rank 0 becomes master, other processes become slaves if (size > 1){ if (rank==0) master(); else { slave((void *) NULL); } } //Run the simulation using the following if only one processor used else { _half_step = 0; _segment0(total_paths); _gen1[0] = %li+rank; _gen2[0] = %li+rank; _gen1[1] = 0; _gen2[1] = 0; _gen1[2] = 0; _gen2[2] = 0; erand48(_gen1); erand48(_gen2); _half_step = 1; printf("Rank[%%i] beginning half step paths\n",rank); printf("Beginning half step integration ...\n"); _segment0(total_paths); goto write_output; } printf("Beginning full step paths\n"); printf("Rank[%%i] beginning full step integration ...\n",rank); printf("Beginning paths\n"); printf("Rank[%%i] beginning integration ...\n",rank); _segment0(size); _segment0(); printf("Rank[%%i] beginning half step paths\n",rank); printf("Beginning half step paths\n"); printf("Rank[%%i] beginning half step integration ...\n",rank); printf("Beginning half step integration ...\n"); _half_step=1; double* _temp_vector; unsigned long _length; _length = _mg%li_size*_mg%li_fullstep_ncomponents; _temp_vector = new double[_length]; MPI_Reduce(_mg%li_fullstep,_temp_vector,_length,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); for(unsigned long _i0=0; _i0<_length; _i0++) _mg%li_fullstep[_i0]=_temp_vector[_i0]; MPI_Reduce(_mg%li_fullstep_sd,_temp_vector,_length,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); _mg%li_fullstep_sd[_i0]=_temp_vector[_i0]; MPI_Reduce(_mg%li_halfstep,_temp_vector,_length,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); _mg%li_halfstep[_i0]=_temp_vector[_i0]; MPI_Reduce(_mg%li_halfstep_sd,_temp_vector,_length,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); _mg%li_halfstep_sd[_i0]=_temp_vector[_i0]; delete[] _temp_vector; /* Adaptive Scheduler single processor break point */ write_output: if(rank==0) _write_output(); _write_output(); double endTime = MPI_Wtime(); if(rank==0) time_t endTime = time(NULL); printf("Time elapsed for simulation is: %%5.5f seconds\n",endTime-startTime); MPI_Finalize(); printf("\a"); return 0 ; } int master(){ int outstanding = 0; /*number of slaves that are still processing tasks*/ int schedule[size]; /*Batch size scheduled for each slave [resetted every iteration]*/ int sendtag; /*MPI Tag value, fullstep -> 1, halfstep -> 2*/ int sendtag = 1; double timing[size]; /*Timing function to determine computation to communication ratio*/ int partitions[size]; /*Batch size scheduled for each slave [resetted after completion]*/ double *active_throughput; /*Active pointers, used for clarity*/ double *active_commave; int *active_assigned; int i, j, k; /*indexes, and size of MPI_COMM_WORLD*/ double bufs[size]; /*MPI Input buffer*/ int idle = size-1; /*Number of idle processors not including master (size - outstanding -1)*/ MPI_Status stats[size]; /*MPI Structures*/ MPI_Request reqs[size]; int indices[size]; int ndone; double schedtime=0.0; /*time spent deciding and dispatching schedules*/ double commtime=0.0; /*index for communication latency*/ double totaltime=0.0; /*index for seconds per schedule*/ double totalcommtime=0.0; /*total communication latency*/ double paratime=0.0; /*total parallel walltime for slaves excluding mslave*/ /************* Scheduling Parameters **************/ double calpha = 0.1; /*weighting for communication average*/ double talpha = 0.1; /*weighting for throughput average*/ double rcalpha = 1- calpha; double rtalpha = 1- talpha; double epsilon = 0.005; /*maximum tolerated communication overhead*/ double lower = 2.0; /*minimum tolerated resolution in seconds*/ double upper = 10.0; /*maximum tolerated resolution seconds*/ /***************************************************/ pthread_t helper; /*handle for slave thread*/ double tp1, tp2; int master_half_step; /*This indicates whether the master is sending*/ /*out half step paths or not - redundant to the index k*/ //Allocate memories for global data structures slave_stat = new int[size]; //(int *)malloc(sizeof(int)*size); fschedcount = new int[size]; //(int *)malloc(sizeof(int)*size); fthroughput = new double[size]; fcommave = new double[size]; hschedcount = new int[size]; hthroughput = new double[size]; hcommave = new double[size]; //Initialise slave status arrays for (i=0;i 0 condition makes the master poll for "complete" messages when it has actually allocated all its full paths and half paths already.*/ while ((master_half_step == 0 && fullpaths_assigned < total_paths)|| (master_half_step == 1 && (halfpaths_assigned < total_paths || outstanding > 0))){ /*Test whether there is an incoming message from slaves the idle == 0 condition is for the situation when SOME slaves have not finished their full paths whilst the master is ready to allocate half paths - this allows the master to allocate half paths in the meantime, instead of waiting for completion of all full paths*/ if (outstanding > 0 && (idle == 0 || (fullpaths_assigned + halfpaths_assigned >= 2*total_paths))){ //Loop until all tasks are finished, and all results recieved // -Check for requests from slaves for more tasks // -Cyclically allocate a task to idle slaves to thread while (fullpaths_assigned < total_paths || outstanding > 0){ if (outstanding > 0){ //Wait for messages from slaves Testsome: MPI_Testsome(size,reqs, &ndone, indices, stats); if (ndone == 0){ /*If no messages, sleep for x secs before checking again*/ usleep(10000); goto Testsome; } for (i=0; i= 2*total_paths) if (fullpaths_assigned >= total_paths) continue; /********************SCHEDULE MORE TASKS FOR IDLE SLAVES***********************/ for (i=0;i= total_paths) if (fullpaths_assigned >= total_paths) break; //only allocate more tasks to slaves that are idle if (slave_stat[i] == 0){ //printf("allocating tasks to rank %%d\n",i); slave_stat[i]=1; idle--; //Determine partition size based on slave throughput and //communication overhead. Preferable estimated computing times //for each schedule is high enough to reduce comm overhead //and between upper and lower partitions[i] = (int) (MAX((active_commave[i]*active_throughput[i])/epsilon, active_throughput[i]*lower)); partitions[i] = (int) (MIN(partitions[i], active_throughput[i]*upper)); partitions[i] = (int) (MAX(partitions[i], 1)); if (*active_assigned + partitions[i] <= total_paths){ schedule[i] = partitions[i]; *active_assigned += partitions[i]; } else { schedule[i] = total_paths-*active_assigned; partitions[i] = schedule[i]; *active_assigned += schedule[i]; partitions[i] = (int) (MAX((fcommave[i]*fthroughput[i])/epsilon, fthroughput[i]*lower)); partitions[i] = (int) (MIN(partitions[i],fthroughput[i]*upper)); partitions[i] = (int) (MAX(partitions[i], 1)); if (fullpaths_assigned + partitions[i] <= total_paths){ schedule[i] = partitions[i]; fullpaths_assigned += partitions[i]; } else { schedule[i] = total_paths-fullpaths_assigned; partitions[i] = schedule[i]; fullpaths_assigned += schedule[i]; } } } pthread_mutex_unlock(&tasklock); /**************************SEND SCHEDULE TO SLAVE(S)********************/ //send instructions via MPI to slaves that have been shcheduled for (i=1;i0){ timing[i] = MPI_Wtime(); MPI_Send(&schedule[i],1,MPI_INT,i,sendtag,MPI_COMM_WORLD); outstanding++; } } tp2 = MPI_Wtime() - tp1; schedtime += tp2; } //Initialise variables to do half steps master_half_step = 1; sendtag = 2; } //Block until the thread slave has completed processing pthread_mutex_lock(&finlock); //Tell slave processes to Reduce then exit for (i=0;i= 2*total_paths) if (fullpaths_assigned >= total_paths) break; //Set to half step (once), if all full step paths are assigned if (fullpaths_assigned >= total_paths && _half_step == 0){ printf("Rank[%%i] beginning half step paths\n",rank); fthroughput[0]=thr_throughput; _half_step = 1; thr_batchsize = 1; thr_throughput = 0.0; _gen1[0] = 346+rank; _gen2[0] = 983+rank; _gen1[1] = 0; _gen2[1] = 0; _gen1[2] = 0; _gen2[2] = 0; erand48(_gen1); erand48(_gen2); } if (_half_step==0){ if (fullpaths_assigned + thr_batchsize <= total_paths) fullpaths_assigned += thr_batchsize; else { thr_batchsize = (total_paths - fullpaths_assigned); fullpaths_assigned += thr_batchsize; } } else if (_half_step == 1){ if (halfpaths_assigned+thr_batchsize <= total_paths) halfpaths_assigned += thr_batchsize; else { thr_batchsize = (total_paths - halfpaths_assigned); halfpaths_assigned += thr_batchsize; } } pthread_mutex_unlock(&tasklock); /*****************************************************************/ _segment0(thr_batchsize); #ifdef DEBUG_MPI_Scheduling if (_half_step == 0) fschedcount[0]+=thr_batchsize; else hschedcount[0]+=thr_batchsize; #endif gettimeofday(tp2, NULL); /********************CALCULATE NEW BATCH SIZE*********************/ tp3 = ((tp2->tv_sec - tp1->tv_sec)+((tp2->tv_usec-tp1->tv_usec)/1000000.0)); if (thr_throughput == 0.0) thr_throughput = thr_batchsize/tp3; else thr_throughput = (1-thr_talpha)*thr_throughput + thr_talpha * (thr_batchsize/tp3); #ifdef DEBUG_MPI_Scheduling printf("Rank 0, Completed %%d tasks in %%5.5f secs, T %%5.5f\n",thr_batchsize, tp3,thr_throughput); #endif thr_batchsize = MAX(1,(int) (thr_throughput * thr_time_per_batch)); /*****************************************************************/ } //Unlocking indicates that the thread slave has finished processing //and allows the master to gather results it has produced hthroughput[0] = thr_throughput; delete tp1; delete tp2; fthroughput[0] = thr_throughput; pthread_mutex_unlock(&finlock); return 0; } void *slave(void *ptr){ //This is a slave that runs on another process, it requests more tasks from the master //when it finishes its current task. It takes the length of the solution array as //argument. MPI_Status stat; int count; /*batch size*/ int i; double tp1, tp2; unsigned long _length; while(1){ //Wait for task from master MPI_Recv(&count, 1, MPI_INT,0,MPI_ANY_TAG,MPI_COMM_WORLD,&stat); tp1 = MPI_Wtime(); //Check message type if (stat.MPI_TAG == 0) { break; } else if (stat.MPI_TAG == 1){ _half_step = 0; } else if (stat.MPI_TAG == 2 && _half_step == 0){ printf("Rank[%%i] beginning half step paths\n",rank); _half_step = 1; _gen1[0] = 346+rank; _gen2[0] = 983+rank; _gen1[1] = 0; _gen2[1] = 0; _gen1[2] = 0; _gen2[2] = 0; erand48(_gen1); erand48(_gen2); } _segment0(count); tp2 = MPI_Wtime() - tp1; //Send completion notice to the master MPI_Send(&tp2,1,MPI_DOUBLE,0,stat.MPI_TAG,MPI_COMM_WORLD); } //Tell master that slave is done MPI_Send(NULL, 0, MPI_DOUBLE,0,0,MPI_COMM_WORLD); return 0; } //Debugging functions int print_array(double *array, int size){ int i, j; for (i=0, j=0 ; iEE$ED$E$VEu2uE$)E$^]ÐUE D$E$ÐUE D$E$ÐUEU(EE D$E$ &uE$tEՋEÐUE D$E$3ÐUE D$E$|ÐUV$E$EE D$E$>EE$VED$E$2&EuuE$(E$^]ÐU(E}tU$FEEÐUU} tU D$E$ÐU(E}tU$EEÐUE$'ÐU} tU D$E$ÐUE$EÐU8ED$$6E}tWEEE D$E$8EEE}t}tED$E$EEE$]'ÐUE$!EÐU(ED$$E}t E UÐUE ÐUUE D$E$ÐUUEUEU ;UUE Ë$Ë$hT0LUShs} u}u) D$$%} u}u)D$$%} u}u *D$$%} u}u*-D$$%} u}u,*3D$$X%} u}u,*$"%} u}u*$%} u}u *$$} u}u)$$} u}u)$$[]ÐUD$$~UD$$bL4Node7Element12xmdsSequence13xmdsException11xmdsSegment11xmdsElement11xmdsUtilityzPLR|A' $$s! $Ls! ,tsK $t $|t $pt ,dt ,Lt  (| (@ ( , ,0G?  (` (P ($ ( ( (< (ht (H $ $l $L $8@ $`  $ $ $ $ $( $P $x $ $| $p $d $@P6 (h`D (x' $t $\ $H! $8D $`< $4 $6 (,' $( $, $T $| $ $- $ $  (D % $p  $  ( D $  ( H $@  $h ' $  ( H $  $ ' $4 ! $\  $ - , a $  $  $,  $T  $| ! $  $ - $  $  (D % ,p a $  $  $  $g $@ $h $ $ $g $ $0 $X $  $= (s $ $$ $L  $t= $ $ (s $/ $@  $h) $/ $ $) $ $0{ $X, $. (f $  $ $$ $L $t $ $ $ \⍀P\\⍀P\\k⍀kP\\V⍀VPp\k\A⍀APW\R\,⍀,P>\9\⍀P%\ \⍀P \\⍀P[[⍀P[[⍀P[[⍀P[[⍀P[[⍀Pv[q[o⍀oP][X[Z⍀ZPD[?[E⍀EP+[&[0⍀0P[ [⍀PZZ⍀PZZ⍀PZZ⍀PZZ⍀PZZ⍀P|ZwZ⍀PcZ^Z⍀PJZEZs⍀sP1Z,Z^⍀^PZZI⍀IPYY4⍀4PYY⍀PYY ⍀ PYY ⍀ PYY ⍀ PY}Y ⍀ PiYdY ⍀ PPYKY ⍀ P7Y2Y ⍀ PYYw ⍀w PYYb ⍀b PXXM ⍀M PXX8 ⍀8 PXX# ⍀# PXX ⍀ PXX ⍀ PoXjX ⍀ PVXQX ⍀ P=X8X ⍀ P$XX ⍀ P XX ⍀ PWW{ ⍀{ PWWf ⍀f PWWQ ⍀Q PWW< ⍀< PWW' ⍀' PuWpW ⍀ P\WWW ⍀ PCW>W ⍀ P*W%W ⍀ PW W ⍀ PVV ⍀ PVV ⍀ PVV ⍀ PVVj ⍀j PVVU ⍀U P{VvV@ ⍀@ PbV]V+ ⍀+ PIVDV ⍀ P0V+V ⍀ PVV ⍀ PUU ⍀ PUU ⍀ PUU ⍀ PUU ⍀ PUU ⍀ PU|Un ⍀n PhUcUY ⍀Y POUJUD ⍀D P6U1U/ ⍀/ PUU ⍀ PUT ⍀ PTT ⍀ PTT ⍀ PTT ⍀ PTT ⍀ PTT ⍀ PnTiT ⍀ PUTPTr ⍀r PbG SG=DG z> >z> > > > > >a> >zy> j>ad> U>zO> @>z4> ,> >  >a> =z= =z= =`z= = = {= f= ^= G= 5=b!= =a = <-z< <a< <z< <w< <a< <yt< l< a< R<aL< =<`y-< <w<  <a< ;y; ; ; ;a; ;x; ;w{; l;af; W;`xA; 9; .; ;a;  ; x: :w: :a: :w: :a: :@w: x:wQ: I: A: ,: :a: :v: 9v9 9 9 9 9 9a9 9u9 z9wun9 f9 [9 L9aF9 79v19 "9a9  9v9 8 v8 8 8 8 8 8u8 8u8 {8 j8 b8 J8 B8 78 (8a"8 8u 8 7wu7 7 7 7a7 7p7 7@u7 7 v7 n7 a7 R7!uJ7 ;7p/7 '7 7 7 6 6a6 6Rp6 6a6 6 p6 6t6 |6 m6 e6 X6 I6tA6 26o&6 6  6 6 5 5 5 5st5 5Vt5 5 t5 5sy5 q5 f5 W5sQ5 B5xs<5 -5fs'5 5Ts5 5Bs4 40s4 4s4 4 4 4r4 4 }4 u4 j4 [4rU4 F4r74 /4 $4 4r4 4q3 3q3 3 3 3q3 3q3 3q3 |3rqo3 g3 Z3 K3aqE3 63Pq03 !3Aq3  32q3 2#q2 2q2 2p2 2 2 2p2 2 q2 i2 ^2 O2aI2 :2p22 #2p2 2 2 1a1 1Rp1 1a1 1 p1 1o1 1 q1 i1 Q1 C1 /1 1 0 0 0 0 0 0 0 0bu0 f0a`0 Q0oA0 20o0 0 0 /@o/ / o/ / / / / y/ f/i^/ V/ K/ 8/i0/ (/ / / . . .a. .n. ~. s. d.`n@. 1. n-m-m- - - - - - - - u-aj- W- H-m-  - - , , , , , , , , , , ,mS, K, C, ;, *, ", ,  , , + + + +m+m+ + +t+ +@m{+ k+ P+ H+ 7+ #+  + * * * * * * * * g* R* D* 5*l* * * ) ) )l) )@l) ) ) ) ) k) c) R) J) ?) ) ) ) ( ( (a( (l( (k( ( ( (k( q(ke( ]( R( C(j4( ,( !( (a ( 'jj' 'Yj' ' ' ' ' z' i^' V' I' A' 4' ,' ' ' & & & & & & & & {& l& d& P& ;& ,& $& & % % % % %h% % % %hv% n% a% Y% G% ?% 7% %  % $ $ $ $ $ $ $ $i$ $ y$ c$ P$ =$ *$ $|i$ $i# # # #i# # #|i# #i# # # s#ik# [# L#|iF# 7#ei-# %# #  #`i# " "Ri" " " " " " " u" m" Y" D" 5" -" " " ! ! ! !Ei! ! ! ! v! g! iK! C! 6! .! !! ! ! !         t e ] I 4 %       h   }ho g Z R @ 8 0           @h  x m ^7hP = .3h$           g r _ PgB : - %      `g      ~ v h S G ? 1 "f     f     e  y n f T L`f> + #e       f  e   z r ` XeJ 7 /e%       e  e     o gea L = 5 '            y d X P B :`e0 %    d     e    d    zdp h ` M B 3c- %c  cF  a=  `c= pa=j [ c=S Db=8 -       b= b=    b=q ia=_ T La=?=9F $ a  `a /a  aF  a{ i Z`H @`6 + #`F      o g``XZXTF   td    0`d t : &     )`d} r ^ G 3td%    _d   } ` L 3     _d   ^ L ;  ?_d      g U_dG 3       _d  g E 3 "   _d     u W H _dB ,    _d  `_d     ?_d ~ _dr j W L 6    _d     m b N /   _d    { 6 ' _d xd|d mtd_ ^d   td N^dB      ^dv bxdV|d    ^d `^d { s-^dfd`F H 3 (    ]] ^]]F }a@ 2   ]m]m ]m]mm    ]m iF W33M- bT q Q = ,     } c 7        v ` D         n ^ F $     v d *     n P *     o U >       L '        S E (        ` @      | M 1       q R 0      k ] I 5       p T 1  (f $  7 ~\ T? 7"   Ķ xĶ x} qxkV JxD/ #iF = | 6 ; } 4 < } P? L| H5 D> @} 09 $A ~ @ |  Hx0tPlLh(D$@ȡġ\xXt=@~Y4(P0L ($ЊؠԠlthDl`@\<84~ȉ xPtPDlLh((D$@ }XȞĞL\0xXt4P0L ($|؝ԝtlXhD<`@\Ԇ84      t 8p H dD ` < 8 ؅    ě  d| X HtT p0 ,L, H $    ̚ Ț ` ` @|\ x8 T4 P , ( ؃  ؙ ԙ t l Lh D 0`@ \ 4 0 ̂    ܘ x t Xp H 0dD ` < 8ȁė|XtTp0hL,HL$ $Ж̖܀d`|<X8Tx0,dTܕ,lhD`@\84 dH|@xT$pPl,H(D ~~Г̓~d~`|<~X8T|~0,t~`~ܒ}\ug}l[hI<}e@Z\<X}9Y0,| X|Wؑԑ|Vme|d V`|=B{Y4P0L {)0 ȐĐL|Y1yuPTlLh)yE <8hLďxx`tP<lLh(D$@p/ jjE } wfofiE d ^bVbPE K E^g=^g7E 2 ,ZN$ZNE  V5 V5E  RRE  NNE  JJE  FѲFѲE  BBE  }>u>oE j d:\:VE Q K6mC6m=E 8 22T*2T$E  .;.; E  *"*"E  & & E  ""E  ױױE  E  {uE p jb\E W QsIsCE > 8 Z0 Z*E % AAE  ( ( E    E    E  ݰ ݰ E  İ İ E   { E v  p h b E ]  W yO yI E D  > `6 `0 E +  % ޵G ޵G E   ڵ. ڵ. E  ֵ ֵ E  ҵ ҵ E  ε ε E  ʵʯ ʵʯ E  Ƶ Ƶ E |  v µn µh E c  ] U O E J  D f< f6 E 1  + M# M E    4 4 E    E    E    E  Ю Ю E    E  | t n E i  c [ U E P  J lB l< E 7  1 S) S# E    : : E   ! ! E    E  ~ ~ E  z֭ z֭ E  v v E  rz rt E o  i na n[ E V  P jrH jrB E =  7 fY/ fY) E $   b@ b@ E   ^' ^' E  Z Z E  V V E  Rܬ Rܬ E  Nì Nì E  J Jz E u  o Fg Fa E \  V BxN BxH E C  = >_5 >_/ E *  $ :F :F E   6- 6-E  22E  ..E  **E  &ɫ&ɫE  ""E { umgE b \~T~NE I Ce;e5E 0 *L"LE  3 3E    E  E  E  ϪϪE  E  {smE h bZTE O IkAk;E 6 0R(R"E  99 E    E  ޴޴E  ڴڴE  ִթִթE  ҴҴE  δyδsE n hʴ`ʴZE U OƴqGƴqAE < 6´X.´X(E # ??E  &&E    E  E  ۨۨE  ¨¨E  yE t nf`E [ UwMwGE B <^4^.E ) #EEE  ,,E  E  E  E  ȧȧE  ~~E z tzlzfE a [v}Sv}ME H Brd:rd4E / )nK!nKE  j2j2E  ffE  bbE  ^^E  ZΦZΦE  VVE  zRrRlE g aNYNSE N HJj@Jj:E 5 /FQ'FQ!E  B8B8E  >>E  ::E  66E  2ԥ2ԥE  ..E  *x*rE m g&_&YE T N"pF"p@E ; 5W-W'E " >>E  %%E    E  E   ڤ ڤE  E  ~xE s me_E Z TvLvFE A ;]3]-E ( "DDE  ++E  E  E  E  ޳ǣ޳ǣE  ڳڳ~E y sֳkֳeE ` Zҳ|Rҳ|LE G Aγc9γc3E . (ʳJ ʳJE  Ƴ1Ƴ1E           | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                            | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                            | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $          CWDz{*)/  0  ,.+-  "!y21'%IQPUTSR#Jcrl\t]umYZv_^Owq[jsi3x(kdbagnh`MoNpXVeHL&$KCWDz{*)/  0  ,.+-  "!y21'%IQPUTSR#Jcrl\t]umYZv_^Owq[jsi3x(kdbagnh`MoNpXVeHL&$K89:<&<2<D<R<Ķf<t< <4<p<<<< <@<` =p=*=:=K=\=m=<=P=`=p====>->F>_> x>>>> > > ? "? 5? H? \? p? ? ? ? ? ? ? ? @ @ 0@ E@ [@ q@ @ @ @ @ @ A )A 3A fA ܢA   dv # x TF N  Б  (N d! <{     4g   H < # J  ؕ|  A! x" %" l2 % t X% L  P  (' y! Ȗ'   @ h  ؒ  ( Pc+ $ % ЙL% x% $* 0 $ U$ ,$ X$ + H" ., p# 4# 1 & & 5' D' l ! x/ K/ ܟ- ! - <! DO" %2 pj( ( 4Z1 0 a0 / 0"+ Н+ * * ) U* XZ) ) 2 d2 <3 m- ^# \!  `& Ě + T }  0/ ( \) # ؘ xE s ȓ ! 1 HN2 , . s, . d91 Р;0 X%  ( " 2 2 TV\ VZ([:ViWXYg<<`hL]04LK xT2d܀l0L @$ bxX %9 d$@}`~t~|~~t t  ؃ zԆ ̂  0E L7vz0 X% g  , H> aL!(hK ؅ t<v|X>t6<FH0, Hd?bȉBl8| ~~E~m~C$!(r2XPLZDgЊolr `u @ȁ R Ď  e  @ `  Ў > z   ` N3X\];n45;;:;8445]5*54;3s;z778p6677o:995z9;:K:*98X9A6J73::L;`868677*8H9Z433;52;G4'484;c;339;:f3_nxmdsSequences__ZN12xmdsSequenceC2EPK14xmdsSimulationRKb__ZN12xmdsSequenceC4EPK14xmdsSimulationRKb__ZN12xmdsSequenceC1EPK14xmdsSimulationRKb___i686.get_pc_thunk.bx__ZN12xmdsSequenceD2Ev__ZN12xmdsSequenceD4Ev__ZN12xmdsSequenceD1Ev__ZN12xmdsSequenceD0Ev__ZN12xmdsSequence14processElementEPK7Element__ZNK12xmdsSequence17outputSampleCountEv__ZNK12xmdsSequence12writeDefinesEP7__sFILE__ZNK12xmdsSequence12writeGlobalsEP7__sFILE__ZNK12xmdsSequence15writePrototypesEP7__sFILE__ZNK12xmdsSequence13writeRoutinesEP7__sFILE__ZN12xmdsSequence18createxmdsSequenceEv__ZN12xmdsSequence24createxmdsIntegrateRK4EXEv__ZN12xmdsSequence24createxmdsIntegrateRK4IPEv__ZN12xmdsSequence26createxmdsIntegrateARK45EXEv__ZN12xmdsSequence26createxmdsIntegrateARK45IPEv__ZN12xmdsSequence23createxmdsIntegrateSIEXEv__ZN12xmdsSequence23createxmdsIntegrateSIIPEv__ZN12xmdsSequence16createxmdsFilterEv__ZNSaIPK11xmdsSegmentEC1Ev__ZNSaIPK11xmdsSegmentEC4Ev__ZNSaIPK11xmdsSegmentED1Ev__ZNSaIPK11xmdsSegmentED4Ev__ZNSt4listIPK11xmdsSegmentSaIS2_EEC1ERKS3___ZNSt4listIPK11xmdsSegmentSaIS2_EEC4ERKS3___ZNSt4listIPK11xmdsSegmentSaIS2_EED1Ev__ZNSt4listIPK11xmdsSegmentSaIS2_EED4Ev__ZNSaI9XMLStringEC1Ev__ZNSaI9XMLStringEC4Ev__ZNSaI9XMLStringED1Ev__ZNSaI9XMLStringED4Ev__ZNSt4listI9XMLStringSaIS0_EEC1ERKS1___ZNSt4listI9XMLStringSaIS0_EEC4ERKS1___ZNSt4listI9XMLStringSaIS0_EED1Ev__ZNSt4listI9XMLStringSaIS0_EED4Ev__ZNKSt4listI9XMLStringSaIS0_EE4sizeEv__ZNSt4listI9XMLStringSaIS0_EE9push_backERKS0___ZNSt4listI9XMLStringSaIS0_EE5beginEv__ZNKSt14_List_iteratorI9XMLStringRS0_PS0_EdeEv__ZNKSt14_List_iteratorI9XMLStringRS0_PS0_EptEv__ZNKSt4listIPK11xmdsSegmentSaIS2_EE5beginEv__ZNKSt4listIPK11xmdsSegmentSaIS2_EE3endEv__ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EppEi__ZNKSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EdeEv__ZNKSt4listISsSaISsEE4sizeEv__ZNSt4listISsSaISsEE5beginEv__ZNSt14_List_iteratorISsRKSsPS0_EC1ERKS_ISsRSsPSsE__ZNSt14_List_iteratorISsRKSsPS0_EC4ERKS_ISsRSsPSsE__ZNKSt14_List_iteratorISsRKSsPS0_EptEv__ZNSt14_List_iteratorISsRKSsPS0_EppEi__ZNKSt14_List_iteratorISsRKSsPS0_EdeEv__ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_EPKS3___ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC1ERKS_IS0_RS0_PS0_E__ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC4ERKS_IS0_RS0_PS0_E__ZNSt4listI9XMLStringSaIS0_EE3endEv__ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EppEi__ZNKSt14_List_iteratorI9XMLStringRKS0_PS1_EdeEv__ZNSt4listIPK11xmdsSegmentSaIS2_EE9push_backERKS2___ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EEC2ERKS3___ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EEC4ERKS3___ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EED2Ev__ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EED4Ev__ZNSt10_List_baseI9XMLStringSaIS0_EEC2ERKS1___ZNSt10_List_baseI9XMLStringSaIS0_EEC4ERKS1___ZNSt10_List_baseI9XMLStringSaIS0_EED2Ev__ZNSt10_List_baseI9XMLStringSaIS0_EED4Ev__ZNKSt4listI9XMLStringSaIS0_EE5beginEv__ZNKSt4listI9XMLStringSaIS0_EE3endEv__ZSt8distanceISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E15difference_typeES7_S7___ZNSt4listI9XMLStringSaIS0_EE6insertESt14_List_iteratorIS0_RS0_PS0_ERKS0___ZNSt14_List_iteratorI9XMLStringRS0_PS0_EC1EPSt10_List_nodeIS0_E__ZNSt14_List_iteratorI9XMLStringRS0_PS0_EC4EPSt10_List_nodeIS0_E__ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EC1EPSt10_List_nodeIS2_E__ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EC4EPSt10_List_nodeIS2_E__ZNKSt4listISsSaISsEE5beginEv__ZNKSt4listISsSaISsEE3endEv__ZSt8distanceISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E15difference_typeES6_S6___ZNSt14_List_iteratorISsRSsPSsEC1EPSt10_List_nodeISsE__ZNSt14_List_iteratorISsRSsPSsEC4EPSt10_List_nodeISsE__ZNSt4listIPK11xmdsSegmentSaIS2_EE3endEv__ZNSt4listIPK11xmdsSegmentSaIS2_EE6insertESt14_List_iteratorIS2_RS2_PS2_ERKS2___ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EEC2ERKS3___ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EEC4ERKS3___ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EE11_M_get_nodeEv__ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EE7__clearEv__ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EE11_M_put_nodeEPSt10_List_nodeIS2_E__ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EEC2ERKS1___ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EEC4ERKS1___ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EE11_M_get_nodeEv__ZNSt10_List_baseI9XMLStringSaIS0_EE7__clearEv__ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EE11_M_put_nodeEPSt10_List_nodeIS0_E__ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC1EPSt10_List_nodeIS0_E__ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC4EPSt10_List_nodeIS0_E__ZSt19__iterator_categoryISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E17iterator_categoryERKS7___ZSt10__distanceISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E15difference_typeES7_S7_St18input_iterator_tag__ZNSt4listI9XMLStringSaIS0_EE14_M_create_nodeERKS0___ZNSt14_List_iteratorISsRKSsPS0_EC1EPSt10_List_nodeISsE__ZNSt14_List_iteratorISsRKSsPS0_EC4EPSt10_List_nodeISsE__ZSt19__iterator_categoryISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E17iterator_categoryERKS6___ZSt10__distanceISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E15difference_typeES6_S6_St18input_iterator_tag__ZNSt14_List_iteratorIPK11xmdsSegmentRS2_PS2_EC1EPSt10_List_nodeIS2_E__ZNSt14_List_iteratorIPK11xmdsSegmentRS2_PS2_EC4EPSt10_List_nodeIS2_E__ZNSt4listIPK11xmdsSegmentSaIS2_EE14_M_create_nodeERKS2___ZNSt14__simple_allocISt10_List_nodeIPK11xmdsSegmentESt24__default_alloc_templateILb1ELi0EEE8allocateEm__ZSt8_DestroyIPK11xmdsSegmentEvPT___ZNSt14__simple_allocISt10_List_nodeIPK11xmdsSegmentESt24__default_alloc_templateILb1ELi0EEE10deallocateEPS4_m__ZNSt14__simple_allocISt10_List_nodeI9XMLStringESt24__default_alloc_templateILb1ELi0EEE8allocateEm__ZSt8_DestroyI9XMLStringEvPT___ZNSt14__simple_allocISt10_List_nodeI9XMLStringESt24__default_alloc_templateILb1ELi0EEE10deallocateEPS2_m__ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EppEv__ZSt10_ConstructI9XMLStringS0_EvPT_RKT0___ZNSt14_List_iteratorISsRKSsPS0_EppEv__ZSt10_ConstructIPK11xmdsSegmentS2_EvPT_RKT0___ZTV12xmdsSequence__ZTI12xmdsSequence__ZNK11xmdsSegment24writeInitialisationCallsEP7__sFILE__ZnwmPv__ZdlPvS___ZNSt19_List_iterator_baseC2EPSt15_List_node_base__ZNSt19_List_iterator_base7_M_incrEv__ZNKSt19_List_iterator_baseneERKS___ZTI4Node__ZTVN10__cxxabiv117__class_type_infoE__ZTS4Node__ZTI7Element__ZTVN10__cxxabiv121__vmi_class_type_infoE__ZTS7Element__ZTVN10__cxxabiv120__si_class_type_infoE__ZTS12xmdsSequence__ZTI11xmdsSegment__ZTI13xmdsException__ZTS13xmdsException__ZNSt19_List_iterator_baseC4EPSt15_List_node_base__ZTS11xmdsSegment__ZTI11xmdsElement__ZTS11xmdsElement__ZTI11xmdsUtility__ZTS11xmdsUtility_ZN12xmdsSequenceC2EPK14xmdsSimulationRKb.eh_ZN12xmdsSequenceC1EPK14xmdsSimulationRKb.eh_ZN12xmdsSequenceC4EPK14xmdsSimulationRKb.eh_ZN12xmdsSequenceD2Ev.eh_ZN12xmdsSequenceD1Ev.eh_ZN12xmdsSequenceD0Ev.eh_ZN12xmdsSequenceD4Ev.eh_ZN12xmdsSequence14processElementEPK7Element.eh_ZNK12xmdsSequence17outputSampleCountEv.eh_ZNK12xmdsSequence12writeDefinesEP7__sFILE.eh_ZNK12xmdsSequence12writeGlobalsEP7__sFILE.eh_ZNK12xmdsSequence15writePrototypesEP7__sFILE.eh_ZNK12xmdsSequence13writeRoutinesEP7__sFILE.eh_ZN12xmdsSequence18createxmdsSequenceEv.eh_ZN12xmdsSequence24createxmdsIntegrateRK4EXEv.eh_ZN12xmdsSequence24createxmdsIntegrateRK4IPEv.eh_ZN12xmdsSequence26createxmdsIntegrateARK45EXEv.eh_ZN12xmdsSequence26createxmdsIntegrateARK45IPEv.eh_ZN12xmdsSequence23createxmdsIntegrateSIEXEv.eh_ZN12xmdsSequence23createxmdsIntegrateSIIPEv.eh_ZN12xmdsSequence16createxmdsFilterEv.eh_ZNSaIPK11xmdsSegmentEC1Ev.eh_ZNSaIPK11xmdsSegmentEC4Ev.eh_ZNSaIPK11xmdsSegmentED1Ev.eh_ZNSaIPK11xmdsSegmentED4Ev.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EEC1ERKS3_.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EEC4ERKS3_.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EED1Ev.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EED4Ev.eh_ZNSaI9XMLStringEC1Ev.eh_ZNSaI9XMLStringEC4Ev.eh_ZNSaI9XMLStringED1Ev.eh_ZNSaI9XMLStringED4Ev.eh_ZNSt4listI9XMLStringSaIS0_EEC1ERKS1_.eh_ZNSt4listI9XMLStringSaIS0_EEC4ERKS1_.eh_ZNSt4listI9XMLStringSaIS0_EED1Ev.eh_ZNSt4listI9XMLStringSaIS0_EED4Ev.eh_ZNKSt4listI9XMLStringSaIS0_EE4sizeEv.eh_ZNSt4listI9XMLStringSaIS0_EE9push_backERKS0_.eh_ZNSt4listI9XMLStringSaIS0_EE5beginEv.eh_ZNKSt14_List_iteratorI9XMLStringRS0_PS0_EdeEv.eh_ZNKSt14_List_iteratorI9XMLStringRS0_PS0_EptEv.eh_ZNKSt4listIPK11xmdsSegmentSaIS2_EE5beginEv.eh_ZNKSt4listIPK11xmdsSegmentSaIS2_EE3endEv.eh_ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EppEi.eh_ZNKSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EdeEv.eh_ZNKSt4listISsSaISsEE4sizeEv.eh_ZNSt4listISsSaISsEE5beginEv.eh_ZNSt14_List_iteratorISsRKSsPS0_EC1ERKS_ISsRSsPSsE.eh_ZNSt14_List_iteratorISsRKSsPS0_EC4ERKS_ISsRSsPSsE.eh_ZNKSt14_List_iteratorISsRKSsPS0_EptEv.eh_ZNSt14_List_iteratorISsRKSsPS0_EppEi.eh_ZNKSt14_List_iteratorISsRKSsPS0_EdeEv.eh_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_EPKS3_.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC1ERKS_IS0_RS0_PS0_E.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC4ERKS_IS0_RS0_PS0_E.eh_ZNSt4listI9XMLStringSaIS0_EE3endEv.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EppEi.eh_ZNKSt14_List_iteratorI9XMLStringRKS0_PS1_EdeEv.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EE9push_backERKS2_.eh_ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EEC2ERKS3_.eh_ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EEC4ERKS3_.eh_ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EED2Ev.eh_ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EED4Ev.eh_ZNSt10_List_baseI9XMLStringSaIS0_EEC2ERKS1_.eh_ZNSt10_List_baseI9XMLStringSaIS0_EEC4ERKS1_.eh_ZNSt10_List_baseI9XMLStringSaIS0_EED2Ev.eh_ZNSt10_List_baseI9XMLStringSaIS0_EED4Ev.eh_ZNKSt4listI9XMLStringSaIS0_EE5beginEv.eh_ZNKSt4listI9XMLStringSaIS0_EE3endEv.eh_ZSt8distanceISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E15difference_typeES7_S7_.eh_ZNSt4listI9XMLStringSaIS0_EE6insertESt14_List_iteratorIS0_RS0_PS0_ERKS0_.eh_ZNSt14_List_iteratorI9XMLStringRS0_PS0_EC1EPSt10_List_nodeIS0_E.eh_ZNSt14_List_iteratorI9XMLStringRS0_PS0_EC4EPSt10_List_nodeIS0_E.eh_ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EC1EPSt10_List_nodeIS2_E.eh_ZNSt14_List_iteratorIPK11xmdsSegmentRKS2_PS3_EC4EPSt10_List_nodeIS2_E.eh_ZNKSt4listISsSaISsEE5beginEv.eh_ZNKSt4listISsSaISsEE3endEv.eh_ZSt8distanceISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E15difference_typeES6_S6_.eh_ZNSt14_List_iteratorISsRSsPSsEC1EPSt10_List_nodeISsE.eh_ZNSt14_List_iteratorISsRSsPSsEC4EPSt10_List_nodeISsE.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EE3endEv.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EE6insertESt14_List_iteratorIS2_RS2_PS2_ERKS2_.eh_ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EEC2ERKS3_.eh_ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EEC4ERKS3_.eh_ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EE11_M_get_nodeEv.eh_ZNSt10_List_baseIPK11xmdsSegmentSaIS2_EE7__clearEv.eh_ZNSt16_List_alloc_baseIPK11xmdsSegmentSaIS2_ELb1EE11_M_put_nodeEPSt10_List_nodeIS2_E.eh_ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EEC2ERKS1_.eh_ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EEC4ERKS1_.eh_ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EE11_M_get_nodeEv.eh_ZNSt10_List_baseI9XMLStringSaIS0_EE7__clearEv.eh_ZNSt16_List_alloc_baseI9XMLStringSaIS0_ELb1EE11_M_put_nodeEPSt10_List_nodeIS0_E.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC1EPSt10_List_nodeIS0_E.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EC4EPSt10_List_nodeIS0_E.eh_ZSt19__iterator_categoryISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E17iterator_categoryERKS7_.eh_ZSt10__distanceISt14_List_iteratorI9XMLStringRKS1_PS2_EENSt15iterator_traitsIT_E15difference_typeES7_S7_St18input_iterator_tag.eh_ZNSt4listI9XMLStringSaIS0_EE14_M_create_nodeERKS0_.eh_ZNSt14_List_iteratorISsRKSsPS0_EC1EPSt10_List_nodeISsE.eh_ZNSt14_List_iteratorISsRKSsPS0_EC4EPSt10_List_nodeISsE.eh_ZSt19__iterator_categoryISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E17iterator_categoryERKS6_.eh_ZSt10__distanceISt14_List_iteratorISsRKSsPS1_EENSt15iterator_traitsIT_E15difference_typeES6_S6_St18input_iterator_tag.eh_ZNSt14_List_iteratorIPK11xmdsSegmentRS2_PS2_EC1EPSt10_List_nodeIS2_E.eh_ZNSt14_List_iteratorIPK11xmdsSegmentRS2_PS2_EC4EPSt10_List_nodeIS2_E.eh_ZNSt4listIPK11xmdsSegmentSaIS2_EE14_M_create_nodeERKS2_.eh_ZNSt14__simple_allocISt10_List_nodeIPK11xmdsSegmentESt24__default_alloc_templateILb1ELi0EEE8allocateEm.eh_ZSt8_DestroyIPK11xmdsSegmentEvPT_.eh_ZNSt14__simple_allocISt10_List_nodeIPK11xmdsSegmentESt24__default_alloc_templateILb1ELi0EEE10deallocateEPS4_m.eh_ZNSt14__simple_allocISt10_List_nodeI9XMLStringESt24__default_alloc_templateILb1ELi0EEE8allocateEm.eh_ZSt8_DestroyI9XMLStringEvPT_.eh_ZNSt14__simple_allocISt10_List_nodeI9XMLStringESt24__default_alloc_templateILb1ELi0EEE10deallocateEPS2_m.eh_ZNSt14_List_iteratorI9XMLStringRKS0_PS1_EppEv.eh_ZSt10_ConstructI9XMLStringS0_EvPT_RKT0_.eh_ZNSt14_List_iteratorISsRKSsPS0_EppEv.eh_ZSt10_ConstructIPK11xmdsSegmentS2_EvPT_RKT0_.eh_ZnwmPv.eh_ZdlPvS_.eh_ZNSt19_List_iterator_baseC2EPSt15_List_node_base.eh_ZNSt19_List_iterator_base7_M_incrEv.eh_ZNKSt19_List_iterator_baseneERKS_.eh_ZNSt19_List_iterator_baseC4EPSt15_List_node_base.eh___i686.get_pc_thunk.axdyld_stub_binding_helper___gxx_personality_v0_debugFlag__ZN9XMLStringC1ERKS___ZNSt24__default_alloc_templateILb1ELi0EE10deallocateEPvm__ZNSt24__default_alloc_templateILb1ELi0EE8allocateEm___cxa_end_catch___cxa_rethrow___cxa_begin_catch__ZNKSs7compareEPKc__ZN10xmdsFilterC1EPK14xmdsSimulationRKb__ZN17xmdsIntegrateSIIPC1EPK14xmdsSimulationRKb__ZN17xmdsIntegrateSIEXC1EPK14xmdsSimulationRKb__ZN20xmdsIntegrateARK45IPC1EPK14xmdsSimulationRKb__ZN20xmdsIntegrateARK45EXC1EPK14xmdsSimulationRKb__ZN18xmdsIntegrateRK4IPC1EPK14xmdsSimulationRKb__ZN18xmdsIntegrateRK4EXC1EPK14xmdsSimulationRKb__ZN11xmdsElement8addChildEPKS___Znwm__ZNK11xmdsElement13writeRoutinesEP7__sFILE__ZNK9xmdsField16writeSampleCallsEP7__sFILEPKc__ZNK15xmdsMomentGroup20requiresIntegrationsEv__ZNK10xmdsOutput22writePlanDeletionCallsEP7__sFILE__ZNK9xmdsField22writePlanDeletionCallsEP7__sFILE__ZNK10xmdsOutput26assignActiveVectorPointersEP7__sFILEPKc__ZNK9xmdsField26assignActiveVectorPointersEP7__sFILEPKc__ZNK15xmdsMomentGroup21needscomplexRawVectorEv__ZNK10xmdsOutput11momentGroupERKm__ZNK10xmdsOutput13nMomentGroupsEv__ZNK9xmdsField4nameEv__ZNK10xmdsVector4nameEv__ZNK10xmdsVector10vectorTypeEv__ZN13xmdsExceptionC1EPKc__ZNK9xmdsField9getVectorERK9XMLStringRPK10xmdsVector__ZNK9xmdsField11vectorNamesERSt4listI9XMLStringSaIS1_EE__ZNK10xmdsOutput22writePlanCreationCallsEP7__sFILERKbS3___ZNK14xmdsSimulation6outputEv__ZNK9xmdsField22writePlanCreationCallsEP7__sFILERKbS3___ZNK14xmdsSimulation5fieldEv__ZNKSs5c_strEv__ZNK14xmdsSimulation9argStructEv__ZNK11xmdsElement15writePrototypesEP7__sFILE__ZNK11xmdsElement12writeGlobalsEP7__sFILE__ZNK11xmdsElement12writeDefinesEP7__sFILE_fprintf_sprintf__ZNK11xmdsUtility12errorMessageEv__ZNK9XMLString5c_strEv__ZNK14xmdsSimulation10parametersEv__ZNK11xmdsElement10simulationEv__ZN11xmdsUtility20getAssignmentStringsEPK7ElementRK9XMLStringRKbRKmRSt4listIS3_SaIS3_EE__ZNK9XMLString7asULongERm___cxa_throw__ZN13xmdsExceptionC1EPK4NodePKc___cxa_allocate_exception__ZNK9XMLStringeqERKS____dynamic_cast__ZN9XMLStringD1Ev__ZN9XMLStringC1EPKc__ZNK11xmdsElement7verboseEv__ZdlPv__Unwind_Resume__ZN11xmdsSegmentD2Ev_printf__ZN11xmdsSegmentC2EPK14xmdsSimulationRKb_EMPTY_STRING_XML_PREFIX_XML_NAMESPACEURI_XMLNS_PREFIX_XMLNS_NAMESPACEURI__OSSwapInt16__OSSwapInt32__OSSwapInt64_OSReadSwapInt16_OSReadSwapInt32_OSReadSwapInt64_OSWriteSwapInt16_OSWriteSwapInt32_OSWriteSwapInt64_OSHostByteOrder_OSReadBigInt16_OSReadBigInt32_OSReadBigInt64_OSWriteBigInt16_OSWriteBigInt32_OSWriteBigInt64_OSReadLittleInt16_OSReadLittleInt32_OSReadLittleInt64_OSWriteLittleInt16_OSWriteLittleInt32_OSWriteLittleInt64_OSSwapHostToLittleInt16_OSSwapHostToLittleInt32_OSSwapHostToLittleInt64_OSSwapLittleToHostInt16_OSSwapLittleToHostInt32_OSSwapLittleToHostInt64__Z41__static_initialization_and_destruction_0ii__GLOBAL__I_nxmdsSequences__GLOBAL__D_nxmdsSequences_OSSwapInt16.eh_OSSwapInt32.eh_OSSwapInt64.ehOSReadSwapInt16.ehOSReadSwapInt32.ehOSReadSwapInt64.ehOSWriteSwapInt16.ehOSWriteSwapInt32.ehOSWriteSwapInt64.ehOSHostByteOrder.ehOSReadBigInt16.ehOSReadBigInt32.ehOSReadBigInt64.ehOSWriteBigInt16.ehOSWriteBigInt32.ehOSWriteBigInt64.ehOSReadLittleInt16.ehOSReadLittleInt32.ehOSReadLittleInt64.ehOSWriteLittleInt16.ehOSWriteLittleInt32.ehOSWriteLittleInt64.ehOSSwapHostToLittleInt16.ehOSSwapHostToLittleInt32.ehOSSwapHostToLittleInt64.ehOSSwapLittleToHostInt16.ehOSSwapLittleToHostInt32.ehOSSwapLittleToHostInt64.ehEH_frame1_Z41__static_initialization_and_destruction_0ii.eh_GLOBAL__I_nxmdsSequences.eh_GLOBAL__D_nxmdsSequences.eh