From: Jakub Jelinek <ja...@redhat.com>
Date: Tue, 5 Apr 2011 16:37:48 +0200

> On Tue, Apr 05, 2011 at 03:45:26PM +0200, Antoniu Pop wrote:
>> On Tue, Apr 5, 2011 at 3:01 PM, Sho Nakatani <dev.laysak...@gmail.com> wrote:
>> > From: Jakub Jelinek <ja...@redhat.com>
>> > Date: Tue, 5 Apr 2011 08:33:23 +0200
>> > Yes. Also, Lazy Task Creation has another good aspect.
>> > Look at the pictures below. Both shows the call-tree of fibonacci(8).
>> > One is compiled by gcc and the other is by icc.
>> >
>> > (GCC) 
>> > https://github.com/laysakura/GCC-OpenMP-Speedup/raw/e5671e7f4175c3ac17c1543c93edf25dda2ae6ac/test/calltree/openmp-fibonacci-calltree-gcc.png
>> > (ICC) 
>> > https://github.com/laysakura/GCC-OpenMP-Speedup/raw/e5671e7f4175c3ac17c1543c93edf25dda2ae6ac/test/calltree/openmp-fibonacci-calltree-icc.png
> 
> As your testcase doesn't have untied keywords, I doubt ICC uses such 
> scheduling
> for it.
> See also the paper Antoniu referenced, e.g. figure 7 in there.
> 
> If you want to do something about task scheduling as a GSoC project,
> you are certainly welcome, but starting with the idea that
> you want to implement Lazy Task Creation is probably not a good idea,
> you want to read a bunch of papers, download Mercurium project
> with its runtime OpenMP library, read it, see what they actually implement
> and how and if they have multiple strategies still implemented in there,
> see how they perform on the various OpenMP task testcases (we have some
> in libgomp testsuite, but the authors of Mercurium also have some testcases
> (called BOTS)), then try to implement some changes into libgomp/ and see how
> it performs on various testcases with various parameters.

OK. I'll do it as soon as possible.
Then, my current plan is:
- Learn other implementations (as Antoniu said)
- Learn Mercurium implementation
- Implement the same/similar feature as Mercurium in libgomp/ ,
  then evaluate it
  (This might be the first goal)
- Implement Lazy Task Creation for `untied task' in libgomp/ ,
  then evaluate it
  (If I could reach the first goal)

Is this plan OK?
Or do you have other better plans?

>> You may also want to make sure the scheduling policy it enforces
>> cannot interfere with OpenMP semantics. For example, how would the
>> lazy task creation behave if a worker steals a bottom-of-the-stack
>> task that has a taskwait and the tasks bound to this synchronization
>> are left in the other worker's dequeue? There can be deadlock issues
>> or just plain performance issues that can arise. I can't see any
>> obvious issues, but it's worth thinking about.
> 
> Tied tasks have quite strict rules on what can be actually scheduled,
> a new task to be scheduled must be descendant of all the tasks tied to current
> thread that aren't waiting in a barrier.
> 
>       Jakub

--
Sho Nakatani

Reply via email to