<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hey Thomas,<div class=""><br class=""></div><div class="">I’m using SimDAG quite a lot recently, and one thing I notice is this:</div><div class=""><br class=""></div><div class=""><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">auto done = true;</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">xbt_dynar_foreach(dag, task_index, task) {</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">    if (SD_task_get_state(task) == SD_NOT_SCHEDULED) {</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">        done = false;</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">        break;</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">    }</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">}</i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">if (done) </i></div><i style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></i><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;" class=""></span><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class="">    break;</i></div><div style="margin-top: 0px; margin-bottom: 0cm; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px; line-height: 16px;" class=""><i class=""><br class=""></i></div><div>Your tasks go through a lot more states than SD_NOT_SCHEDULED before they are done. They go through SD_NOT_SCHEDULED -> SD_SCHEDULABLE -> SD_SCHEDULED -> SD_RUNNABLE -> SD_RUNNING -> SD_DONE (or SD_FAILED).</div><div>One possible issue is that you may have any task in any of the in-between states between SD_NOT_SCHEDULED and SD_DONE. However, you may incorrectly get “done" in the above code if you have tasks lingering in the states before SD_DONE. I think you should ask if any task at all is in any other state than SD_DONE. </div><div><br class=""></div><div>I use something like this for my simulation:</div><div><br class=""></div><div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">bool sim_not_done(SD_task_t* kernel_tasks) {</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    for (int j=0; j<count; j++)</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">        if (SD_task_get_state(kernel_tasks[j]) != SD_DONE)</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">                return true;</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    return false;</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">}</span></div></div><div><br class=""></div><div>Regards,</div><div>Kiril</div><div><br class=""><blockquote type="cite" class=""><div class="">On 2 May 2018, at 16:26, Thomas Mcsweeney <<a href="mailto:thomas.mcsweeney@postgrad.manchester.ac.uk" class="">thomas.mcsweeney@postgrad.manchester.ac.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div id="divtagdefaultwrapper" dir="ltr" style="caret-color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-size: 12pt; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" class=""><p style="margin-top: 0px; margin-bottom: 0px;" class=""></p><div class=""><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">Hello all,</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><a name="divtagdefaultwrapper2" id="LPlnk955547" class="OWAAutoLink" previewremoved="true"></a>I am a first-year PhD student at the University of Manchester, studying how we can apply techniques from reinforcement learning to design novel scheduling algorithms for applications on HPC systems, with a focus on linear algebra applications. (I have already corresponded with<span class="Apple-converted-space"> </span><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">Frédéric</font></font></font><span class="Apple-converted-space"> </span>an<font size="2" class=""><span style="font-size: 12pt;" class="">d Arnaud; thank you again for your emails!).</span></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><a name="divtagdefaultwrapper" id="LPlnk456633" class="OWAAutoLink" previewremoved="true"></a><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">I have been having some difficulty with some (in principle) simple SimDAG code that I have been working on and wonder whether anyone would be able to offer any help?<br class=""><br class="">Having only recently begun to work with SimDAG, I first worked my way through this tutorial:<span class="Apple-converted-space"> </span><br class=""></font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class=""><br class=""></font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class=""><span style="font-family: Calibri, Helvetica, sans-serif;" class=""></span><a href="http://simgrid.gforge.inria.fr/tutorials/simdag-101.pdf" class="OWAAutoLink" id="LPlnk151449" previewremoved="true">http://simgrid.gforge.inria.fr/tutorials/simdag-101.pdf</a>,</font></font></font></div><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><div id="LPBorder_GT_15252720719320.061227931381304335" style="margin-bottom: 20px; overflow: auto; width: 375px; text-indent: 0px;" class=""><table id="LPContainer_15252720719240.48974316800291284" cellspacing="0" style="width: 337.5px; background-color: rgb(255, 255, 255); overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top-width: 1px; border-top-style: dotted; border-top-color: rgb(200, 200, 200); border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(200, 200, 200);" class=""><tbody class=""><tr valign="top" style="border-spacing: 0px;" class=""><td id="TextCell_15252720719300.22425012262725275" colspan="2" style="vertical-align: top; padding: 0px; display: table-cell; position: relative;" class=""><div id="LPRemovePreviewContainer_15252720719300.20272130186384962" class=""></div><div id="LPTitle_15252720719300.11315287192304213" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;" class=""><a id="LPUrlAnchor_15252720719300.4421961196705998" href="http://simgrid.gforge.inria.fr/tutorials/simdag-101.pdf" target="_blank" style="text-decoration: none;" class="">SimulatingDAGScheduling Algorithms withSimDAG - SimGrid</a></div><div id="LPMetadata_15252720719300.8800076417347887" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;" class=""><a href="http://simgrid.gforge.inria.fr/" class="">simgrid.gforge.inria.fr</a></div><div id="LPDescription_15252720719300.28628813751089677" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;" class="">SimulatingDAGScheduling Algorithms withSimDAG Fr ed eric Suter (CNRS, IN2P3 Computing Center, France) Martin Quinson (Nancy University, France) Arnaud Legrand (CNRS, Grenoble University, France)</div></td></tr></tbody></table></div></font></font><p style="margin-top: 0px; margin-bottom: 0px;" class=""></p><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">and then moved on to attempt to write a scheduler of my own. However, I have encountered some a few problems.</font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><a name="divtagdefaultwrapper1" id="LPlnk876796" class="OWAAutoLink" previewremoved="true"></a><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">Basically, I want to initialize a DAG (loaded from a DOT file) on every iteration of a loop (with a small number of iterations), then launch a simulation and work my way through the DAG in the body of the loop. After each iteration, I make use of data gathered to do some reinforcement learning things. The problem is that although my code compiles without a problem, when run it hangs forever after the first iteration and I am not sure why.</font></font></font><br class=""></div><br class=""><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">For debugging purposes, I created a simplified version of my code, with all the extraneous reinforcement learning bits removed, to illustrate where my problems seem to be. I am also using the most basic DAG (with just three nodes, from the tutorial mentioned above) and cluster (again, the one from the tutorial) I possibly can, to simplify things further - but I am still having the same problem (this simplified code is what I have quoted from below).<br class=""></font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">In each iteration of the loop, after loading the DAG with SD_dotload, I add watchpoints to all the tasks in it (as in the tutorial). I then schedule the root task on a random workstation:</font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><i class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto root = get_root(dag);</font></font></i></font></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">int r = r_workstations(mt);       // r = random number chosen from indices of the workstations.</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto random_workstation = workstations[r];</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><i class=""></i><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class=""><i class="">SD_task_schedulel(root, 1, random_workstation);<span class="Apple-converted-space"> </span></i></font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">Then I begin to simulate:</font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><i class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">xbt_dynar_t changed_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);</font></font></i></font></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">SD_simulate_with_update(-1.0, changed_tasks);<span class="Apple-converted-space"> </span></font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><i class=""></i><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class=""><i class="">while(!(xbt_dynar_is_empty(changed_tasks)))</i></font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">(I am not sure at all of the correct syntax for doing this so it wouldn’t surprise me if it is incorrect - the example in the tutorial doesn’t seem to work for me, so the syntax I used above I got from another example I found somewhere, although I can’t remember where.)</font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">Then in the body of the while loop, I find the tasks ready to be scheduled, choose one at random, then choose a workstation at random and schedule the chosen task on the chosen workstation.</font></font></font></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><br class=""></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">// Get the ready task queue.</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto ready_tasks = get_ready_tasks(dag);</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">if (xbt_dynar_is_empty(ready_tasks))</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">     continue;</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto n_ready_tasks = xbt_dynar_length(ready_tasks);<span class="Apple-converted-space"> </span></font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><br class=""></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">// Choose some task from the ready tasks.</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">std::uniform_int_distribution<int> r_tasks(0, n_ready_tasks - 1);</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">r = r_tasks(mt);</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">xbt_dynar_get_cpy(ready_tasks, r, &task);</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><br class=""></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">// Choose some workstation randomly.</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto r = r_workstations(mt);</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">auto workstation = workstations[r];</font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><br class=""></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">// Schedule the chosen task on the chosen workstation.<span class="Apple-converted-space"> </span></font></font></font></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><font class=""><i class=""></i><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class=""><i class="">SD_task_schedulel(task, 1, workstation);</i></font></font></font><br class=""></div><br class=""><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">Here,<span class="Apple-converted-space"> </span><i class="">get_ready_tasks</i><span class="Apple-converted-space"> </span>is a function taken from one of the examples in the tutorial:</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">xbt_dynar_t get_ready_tasks(xbt_dynar_t dag) {</i></div><i class=""></i><p style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""></p><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    unsigned int i;</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    xbt_dynar_t ready_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    SD_task_t task;</i></div><i class=""></i><p style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""></p><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    xbt_dynar_foreach(dag, i, task)</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">         if (SD_task_get_kind(task) == SD_TASK_COMP_SEQ && SD_task_get_state(task) == SD_SCHEDULABLE)</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">             xbt_dynar_push(ready_tasks, &task);</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    return ready_tasks;</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">}</i></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">(At the moment, I check if the tasks are of kind SD_TASK_COMP_SEQ so I can use SD_task_schedulel, but this shouldn’t be a problem since all the tasks in my DAG are of this type.)</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">I then finish each iteration of the while loop by checking if we have finished scheduling all the tasks in the DAG:</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">auto done = true;</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">xbt_dynar_foreach(dag, task_index, task) {</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    if (SD_task_get_state(task) == SD_NOT_SCHEDULED) {</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">        done = false;</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">        break;</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    }</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">}</i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">if (done)<span class="Apple-converted-space"> </span></i></div><i class=""></i><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class="">    break;</i></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><i class=""><br class=""></i></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">(NB: is there a better way to check if we have scheduled all the tasks in the DAG?)</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">As I said, the code compiles just fine but when I run it, it never seems to get past the first iteration of the loop and I eventually have to kill it, and I haven't been able to locate precisely what the problem is. <span class="Apple-converted-space"> </span><font class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" class=""><font size="3" style="font-size: 12pt;" class="">Again, I am very much a beginner so I am sure that it is just a silly, basic error on my part, but any guidance or suggestions that you may have would be greatly appreciated.</font></font></font><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">(Note that I can of course also provide a fuller code and more detail if anybody wishes.)</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">All the best,</div><div style="margin-top: 0px; margin-bottom: 0cm; line-height: 16px;" class="">Tom<span class="Apple-converted-space"> </span><br class=""></div><br class=""></div><br class=""><p style="margin-top: 0px; margin-bottom: 0px;" class=""></p></div><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Simgrid-user mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:Simgrid-user@lists.gforge.inria.fr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">Simgrid-user@lists.gforge.inria.fr</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://lists.gforge.inria.fr/mailman/listinfo/simgrid-user" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.gforge.inria.fr/mailman/listinfo/simgrid-user</a></div></blockquote></div><br class=""></div></body></html>