<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Hi Kiril,</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Thanks for the reply!</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">I have taken your advice but still seem to be having difficulty.  I think the problem is that my tasks never seem to get beyond the state SD_RUNNABLE and so other tasks that depend on them never get scheduled. 
<br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">I have included a very simple version of my code that I am using to debug below, if anybody is willing to have a look and suggest where I might be going wrong. Is there something simple I am missing? Any advice would
 be greatly appreciated.<br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">All the best,</p>
<p style="margin-top:0;margin-bottom:0">Tom<br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0"><i>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------</i><br>
</p>
<br>
<p style="margin-top:0;margin-bottom:0"></p>
<div><i>#define number_episodes 1 <i>             <br>
// Number of times to load the DAG afresh and work through it - never gets past the first iteration so set it to 1 for convenience.</i><br>
<br>
SD_task_t get_root(xbt_dynar_t dot){<br>
  // Returns the root of the DAG.<br>
  SD_task_t task;  <br>
  xbt_dynar_get_cpy(dot, 0, &task);<br>
  return task;<br>
}<br>
<br>
xbt_dynar_t get_ready_tasks(xbt_dynar_t dag) {<br>
  // Returns an array of the tasks ready to be scheduled.<br>
  unsigned int i;<br>
  xbt_dynar_t ready_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);<br>
  SD_task_t task;  <br>
  xbt_dynar_foreach(dag, i, task)<br>
    if (SD_task_get_state(task) == SD_SCHEDULABLE) {      <br>
      xbt_dynar_push(ready_tasks, &task);<br>
    }<br>
  return ready_tasks;<br>
}<br>
<br>
bool simulation_complete(xbt_dynar_t dag) {  <br>
  // Check if all the tasks in the DAG are done.<br>
  SD_task_t task;<br>
  int task_index;<br>
  xbt_dynar_foreach(dag, task_index, task) {<br>
    if (SD_task_get_state(task) != SD_DONE) <br>
      return false;<br>
  }<br>
  return true;  <br>
}<br>
<br>
int main(int argc, char **argv) {  <br>
  <br>
  SD_init(&argc, argv); // Initialize SimDAG.   <br>
  SD_create_environment("./platform.xml");   // Define the environment.<br>
<br>
  int task_index, i;<br>
  SD_task_t task; <br>
  <br>
  const auto total_nworkstations = SD_workstation_get_number();<br>
  const auto workstations = SD_workstation_get_list();  <br>
<br>
  // Run for number_episodes number of episodes.<br>
  for (i = 0; i < number_episodes; ++i) {     <br>
    <br>
    // Load the DAG from a dot file.<br>
    // Very basic DAG - three nodes c1, c2 and c3 with dependencies c1->c3 and c2->c3, all sequential computations of small amounts.<br>
    auto dag = SD_dotload("./task_graph.dot");    <br>
<br>
    // Schedule the root task on a random workstation.<br>
    auto root = get_root(dag);<br>
    ... *find a random workstation* ...<br>
    SD_task_schedulel(root, 1, random_workstation);<br>
<br>
    // Simulate an episode.<br>
    xbt_dynar_t changed_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);<br>
    SD_simulate_with_update(-1.0, changed_tasks);   <br>
    while(!(xbt_dynar_is_empty(changed_tasks))) {         <br>
<br>
      // Get the ready task queue.<br>
      auto ready_tasks = get_ready_tasks(dag);<br>
      if (xbt_dynar_is_empty(ready_tasks)) {        <br>
          continue;<br>
      }                            <br>
<br>
      // Choose some task randomly from the ready tasks.<br>
      r = ...*random index*...        <br>
      xbt_dynar_get_cpy(ready_tasks, r, &task);      <br>
<br>
      // Choose some workstation randomly.<br>
<i>      workstation = ... *find a random workstation* ...</i>           <br>
<br>
      // Schedule the chosen task on the chosen workstation.    <br>
      SD_task_schedulel(task, 1, workstation);        <br>
      <br>
      // Check if all tasks in the DAG have been scheduled, and exit if that is the case.      <br>
      if (simulation_complete(dag))<br>
          break;               <br>
    }   <br>
<br>
    // Tidy up at the end of each episode.<br>
    xbt_dynar_free_container(&changed_tasks);    <br>
  }<br>
<br>
  // Exit SimDAG.<br>
  SD_exit();<br>
<br>
  return 0;<br>
}<br>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
</i></div>
<p></p>
<br>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Kiril Dichev <K.Dichev@qub.ac.uk><br>
<b>Sent:</b> Monday, May 7, 2018 1:37:21 PM<br>
<b>To:</b> Thomas Mcsweeney<br>
<b>Cc:</b> simgrid-user@lists.gforge.inria.fr; Mawussi Zounon<br>
<b>Subject:</b> Re: [SimGrid-user] Getting started with SimDAG</font>
<div> </div>
</div>
<meta content="text/html; charset=utf-8">
<div class="" style="word-wrap:break-word; line-break:after-white-space">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 class="" 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">
<i class="">auto done = true;</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">xbt_dynar_foreach(dag, task_index, task) {</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">    if (SD_task_get_state(task) == SD_NOT_SCHEDULED) {</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">        done = false;</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">        break;</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">    }</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">}</i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">if (done) </i></div>
<i class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></i><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px"></span>
<div class="" 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">
<i class="">    break;</i></div>
<div class="" 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">
<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 class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">bool sim_not_done(SD_task_t* kernel_tasks) {</span></div>
<div class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">    for (int j=0; j<count; j++)</span></div>
<div class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">        if (SD_task_get_state(kernel_tasks[j]) != SD_DONE)</span></div>
<div class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">                return true;</span></div>
<div class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">    return false;</span></div>
<div class="" style="margin:0px; font-size:11px; line-height:normal; font-family:Menlo; background-color:rgb(255,255,255)">
<span class="" style="">}</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="x_Apple-interchange-newline">
<div class="">
<div id="x_divtagdefaultwrapper" dir="ltr" class="" style="font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing: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">
<p class="" style="margin-top:0px; margin-bottom:0px"></p>
<div class="">
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">Hello all,</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><a name="x_divtagdefaultwrapper2" id="LPlnk955547" class="x_OWAAutoLink"></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="x_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" class="" style="font-size:12pt">Frédéric</font></font></font><span class="x_Apple-converted-space"> </span>an<font size="2" class=""><span class="" style="font-size:12pt">d
 Arnaud; thank you again for your emails!).</span></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><a name="x_divtagdefaultwrapper" id="LPlnk456633" class="x_OWAAutoLink"></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" class="" style="font-size:12pt">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="x_Apple-converted-space"> </span><br class="">
</font></font></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"><br class="">
</font></font></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"><span class="" style="font-family:Calibri,Helvetica,sans-serif"></span><a href="http://simgrid.gforge.inria.fr/tutorials/simdag-101.pdf" class="x_OWAAutoLink" id="LPlnk151449">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" class="" style="margin-bottom:20px; overflow:auto; width:375px; text-indent:0px">
<table id="LPContainer_15252720719240.48974316800291284" cellspacing="0" class="" 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)">
<tbody class="">
<tr valign="top" class="" style="border-spacing:0px">
<td id="x_TextCell_15252720719300.22425012262725275" colspan="2" class="" style="vertical-align:top; padding:0px; display:table-cell">
<div id="LPRemovePreviewContainer_15252720719300.20272130186384962" class=""></div>
<div id="LPTitle_15252720719300.11315287192304213" class="" 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">
<a id="LPUrlAnchor_15252720719300.4421961196705998" href="http://simgrid.gforge.inria.fr/tutorials/simdag-101.pdf" target="_blank" class="" style="text-decoration:none">SimulatingDAGScheduling Algorithms withSimDAG - SimGrid</a></div>
<div id="LPMetadata_15252720719300.8800076417347887" class="" 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">
<a href="http://simgrid.gforge.inria.fr/" class="">simgrid.gforge.inria.fr</a></div>
<div id="LPDescription_15252720719300.28628813751089677" class="" 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">
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 class="" style="margin-top:0px; margin-bottom:0px"></p>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><a name="x_divtagdefaultwrapper1" id="LPlnk876796" class="x_OWAAutoLink"></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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 root = get_root(dag);</font></font></i></font></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">int
 r = r_workstations(mt);       // r = random number chosen from indices of the workstations.</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 random_workstation = workstations[r];</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"><i class="">SD_task_schedulel(root,
 1, random_workstation);<span class="x_Apple-converted-space"> </span></i></font></font></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">Then
 I begin to simulate:</font></font></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">xbt_dynar_t
 changed_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);</font></font></i></font></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">SD_simulate_with_update(-1.0,
 changed_tasks);<span class="x_Apple-converted-space"> </span></font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"><i class="">while(!(xbt_dynar_is_empty(changed_tasks)))</i></font></font></font></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">(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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class=""><br class="">
</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">//
 Get the ready task queue.</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 ready_tasks = get_ready_tasks(dag);</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">if
 (xbt_dynar_is_empty(ready_tasks))</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"> 
    continue;</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 n_ready_tasks = xbt_dynar_length(ready_tasks);<span class="x_Apple-converted-space"> </span></font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class=""><br class="">
</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">//
 Choose some task from the ready tasks.</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">std::uniform_int_distribution<int>
 r_tasks(0, n_ready_tasks - 1);</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">r
 = r_tasks(mt);</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">xbt_dynar_get_cpy(ready_tasks,
 r, &task);</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class=""><br class="">
</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">//
 Choose some workstation randomly.</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 r = r_workstations(mt);</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">auto
 workstation = workstations[r];</font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class=""><br class="">
</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt">//
 Schedule the chosen task on the chosen workstation.<span class="x_Apple-converted-space"> </span></font></font></font></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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" class="" style="font-size:12pt"><i class="">SD_task_schedulel(task,
 1, workstation);</i></font></font></font><br class="">
</div>
<br class="">
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">Here,<span class="x_Apple-converted-space"> </span><i class="">get_ready_tasks</i><span class="x_Apple-converted-space"> </span>is a function taken from one of the examples in the tutorial:</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">xbt_dynar_t get_ready_tasks(xbt_dynar_t dag) {</i></div>
<i class=""></i>
<p class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"></p>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    unsigned int i;</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    xbt_dynar_t ready_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    SD_task_t task;</i></div>
<i class=""></i>
<p class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"></p>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    xbt_dynar_foreach(dag, i, task)</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">             xbt_dynar_push(ready_tasks, &task);</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    return ready_tasks;</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">}</i></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">(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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">I then finish each iteration of the while loop by checking if we have finished scheduling all the tasks in the DAG:</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">auto done = true;</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">xbt_dynar_foreach(dag, task_index, task) {</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    if (SD_task_get_state(task) == SD_NOT_SCHEDULED) {</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">        done = false;</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">        break;</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    }</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">}</i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">if (done)<span class="x_Apple-converted-space"> </span></i></div>
<i class=""></i>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class="">    break;</i></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><i class=""><br class="">
</i></div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">(NB: is there a better way to check if we have scheduled all the tasks in the DAG?)</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">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="x_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" class="" style="font-size:12pt">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 class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">(Note that I can of course also provide a fuller code and more detail if anybody wishes.)</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">All the best,</div>
<div class="" style="margin-top:0px; margin-bottom:0cm; line-height:16px">Tom<span class="x_Apple-converted-space"> </span><br class="">
</div>
<br class="">
</div>
<br class="">
<p class="" style="margin-top:0px; margin-bottom:0px"></p>
</div>
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">_______________________________________________</span><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">Simgrid-user
 mailing list</span><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<a href="mailto:Simgrid-user@lists.gforge.inria.fr" class="" style="font-family:Helvetica; font-size:12px; font-style: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">Simgrid-user@lists.gforge.inria.fr</a><br class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<a href="https://lists.gforge.inria.fr/mailman/listinfo/simgrid-user" class="" style="font-family:Helvetica; font-size:12px; font-style: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">https://lists.gforge.inria.fr/mailman/listinfo/simgrid-user</a></div>
</blockquote>
</div>
<br class="">
</div>
</div>
</body>
</html>