Writing recursive task parallel program with argobots
Hi, I am trying to use argobots for writing a recursive task parallel program. I have taken a very simple recursive task program example, where I am creating a parent argobot task which creates two child argobots tasks and then waits for them by calling ABT_task_free(). When I run this program with one xstream I find that it doesn't terminate. *(Code snippet - * https://gist.github.com/raghav0307/9252fc7b568bc35baab29bdc9da70618* )* My understanding is that this is because the parent task never yields the xstream to the child tasks, and hence the program gets stuck. This program terminates when I use argobot threads instead of argobot tasks. Could someone point me to why this is not working with argobot tasks? Best, Raghav
Pasting the code snippet link again without any formatting - https://gist.github.com/raghav0307/9252fc7b568bc35baab29bdc9da70618 On Thu, Oct 7, 2021 at 11:55 PM Raghav Gupta <[email protected]> wrote:
Hi,
I am trying to use argobots for writing a recursive task parallel program.
I have taken a very simple recursive task program example, where I am creating a parent argobot task which creates two child argobots tasks and then waits for them by calling ABT_task_free(). When I run this program with one xstream I find that it doesn't terminate. *(Code snippet - * https://gist.github.com/raghav0307/9252fc7b568bc35baab29bdc9da70618* )*
My understanding is that this is because the parent task never yields the xstream to the child tasks, and hence the program gets stuck.
This program terminates when I use argobot threads instead of argobot tasks. Could someone point me to why this is not working with argobot tasks?
Best, Raghav
Hi Raghav, Thank you for using Argobots! Yes, in this case, please use ABT_thread. I understand that the naming is extremely confusing, but ABT_thread (=user-level threads) works as a task in typical HPC fine-grained task-parallel programs. Other libraries used for task parallel programs also use "threads" for task implementations (Qthreads, MassiveThreads, ...). You can consider ABT_task (=tasklet) as a special user-level thread that cannot yield. The Argobots paper (Argobots: A Lightweight Low-Level Threading and Tasking Framework) describes the details. If you have any further questions, please feel free to ask here! Thanks, Shintaro On Thu, Oct 7, 2021 at 11:28 AM Raghav Gupta via discuss < [email protected]> wrote:
Pasting the code snippet link again without any formatting - https://gist.github.com/raghav0307/9252fc7b568bc35baab29bdc9da70618
On Thu, Oct 7, 2021 at 11:55 PM Raghav Gupta <[email protected]> wrote:
Hi,
I am trying to use argobots for writing a recursive task parallel program.
I have taken a very simple recursive task program example, where I am creating a parent argobot task which creates two child argobots tasks and then waits for them by calling ABT_task_free(). When I run this program with one xstream I find that it doesn't terminate. *(Code snippet - * https://gist.github.com/raghav0307/9252fc7b568bc35baab29bdc9da70618* )*
My understanding is that this is because the parent task never yields the xstream to the child tasks, and hence the program gets stuck.
This program terminates when I use argobot threads instead of argobot tasks. Could someone point me to why this is not working with argobot tasks?
Best, Raghav
_______________________________________________ discuss mailing list [email protected] https://lists.argobots.org/mailman/listinfo/discuss
participants (2)
-
Raghav Gupta -
Shintaro Iwasaki