<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Wed, 23 May 2012 12:02:11 -0700 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network Comments Feed</title>
    <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>By Arch Robison (Intel)</title>
      <description><![CDATA[ I agree that a work-stealing scheduler should fit in 64K.  Indeed, I ran the Linux "size" command on the scheduler portion of TBB, and it comes out to <36K when compiled with gcc.  
<PRE>
text  data   bss    dec  filename
30256   768   406 31430  task.o
 3039    68    32  3139  tbb_misc.o
 1196     4     0  1200  rml_tbb.o
34491   840   438 35769
</PRE>
Stripped of support for the Intel Parallel Inspector and Detector, it comes to <32k.  Compiling with icc and tool support brings it up to 59K.  I don't know whether the bloat buys significant performance or not.  

Much of the complexity of the TBB task scheduler comes from advanced features like exception safety and affinity support.  Of course there's much more in TBB than just a task scheduler, which is why the library is larger than 35K.  Not that we can't make it smaller.  Jerome's note motivated me to inventory the size of the .o files in TBB, and I found an easy 9K to eliminate from concurrent_vector.o by moving some inlined cold-path code out of line.  An occasional bloat audit can do wonders. ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-34293</link>
      <pubDate>Mon, 09 Nov 2009 10:53:11 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-34293</guid>
    </item>
    <item>
      <title>By Jérôme Muffat-Méridol (Intel)</title>
      <description><![CDATA[ Far from me the idea to claim that TBB would be bloated! 

The Demoscene is a very exciting movement and, when they're set onto fitting a lot in a little space, they do achieve amazing things, check these out:
- Applied Mediocrity by kakiarts, a 64K exe: http://demoscene.tv/page.php?id=172&vsmaction=view_prod&id_prod=13824
- Elevated by RGBA, a 4K exe: http://demoscene.tv/page.php?id=172&vsmaction=view_prod&id_prod=13718 (4K like in 4096 bytes, you have to download it to believe it)

So, 32K is quite certainly too much for them already... 

But the real benefit of coding for size here is elsewhere: the "tinkering factor". I learned programming by typing in code from magazines and messing around with samples a lot more than any other way. Nulstein is primarily that: not industrial grade, playground grade !

 ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-34366</link>
      <pubDate>Tue, 10 Nov 2009 03:01:53 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-34366</guid>
    </item>
    <item>
      <title>By Advance warning, UFO invasion expected at GDCeu&amp;#8217;10 &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45730</link>
      <pubDate>Wed, 07 Jul 2010 09:21:25 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45730</guid>
    </item>
    <item>
      <title>By Advance warning, UFO invasion expected at GDCeu&amp;#8217;10</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45739</link>
      <pubDate>Wed, 07 Jul 2010 12:40:35 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45739</guid>
    </item>
    <item>
      <title>By Everybody on the development team should be well versed in parallelism &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45927</link>
      <pubDate>Tue, 13 Jul 2010 08:03:44 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-45927</guid>
    </item>
    <item>
      <title>By GDCE2010: How DirectX 11 and Intel TBB help to multi-thread your games &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47346</link>
      <pubDate>Fri, 13 Aug 2010 08:16:59 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47346</guid>
    </item>
    <item>
      <title>By GDCeu&amp;#8217;10: the question I was never asked about nulstein &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47356</link>
      <pubDate>Fri, 13 Aug 2010 10:15:41 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47356</guid>
    </item>
    <item>
      <title>By nulstein v2 plog- presenting through a blog &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47680</link>
      <pubDate>Fri, 20 Aug 2010 09:22:27 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47680</guid>
    </item>
    <item>
      <title>By manohar</title>
      <description><![CDATA[ Good article for parallel task scheduler ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47962</link>
      <pubDate>Fri, 27 Aug 2010 11:27:43 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-47962</guid>
    </item>
    <item>
      <title>By nulstein v2 plog &amp;#8211; refresher on task scheduling &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-48619</link>
      <pubDate>Mon, 13 Sep 2010 09:13:24 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-48619</guid>
    </item>
    <item>
      <title>By nulstein v2 plog &amp;#8211; DX9 performance &amp;#8211; Intel Software Network Blogs</title>
      <description><![CDATA[ n/a ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-53264</link>
      <pubDate>Fri, 10 Dec 2010 08:28:34 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-53264</guid>
    </item>
    <item>
      <title>By obhi</title>
      <description><![CDATA[ Interesting article.
I have a question regarding task waiting:
Suppose Task T1 executing in thread M is waiting on J1 which is executing in a seperate thread N. By virtue of this, the task shows up as busy, so worker M looks into its queue to find some more task (in the while(T1->isBusy)  doWork() loop). Suppose there is a task T2, which is next in the queue and it has to wait for T1 to complete, so it asks worker M to wait, but since T1 is already waiting on J1 and doWork has been re-entered from T2 it will result in a Deadlock since the control cannot return to T1's waiting loop until T2 is done. But T2 cant be done without T1.
How is this resolved? ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-58830</link>
      <pubDate>Tue, 19 Apr 2011 11:38:56 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-58830</guid>
    </item>
    <item>
      <title>By Jérôme Muffat-Méridol (Intel)</title>
      <description><![CDATA[ obhi, a task must never wait. 
"A task, on the other hand, is a short stream of operations that executes a fraction of the work independently of other tasks and doesn't block." (ah, the pride of quoting myself :) 

So you're going to say "ok, but I need IO, network, shared buffer [insert your favorite blocking event here] ?".

The way it needs to work is you break your work in two tasks. Let's say you sometimes need to read a file.
- Task A deals with pre-IO work, fires an async IO and is done.
- Async IO completes, and posts Task B
- Task B deals with post IO work.

The task scheduler's job is to keep the CPU as busy as possible. 
Waiting is not a good way to be busy ;)

Ok, now let's take another example which, re-reading your comment may be more like what you're talking about.
Suppose a task is structured like so:
- pre complicatedWork
- spawn more tasks to spread complicatedWork  (say a ParallelFor)
- post complicatedWork

Before doing step 3, the task need to wait for all the subtasks in step 2 to complete...
What do you do when you have nothing to do and your team is at work?
You give them a hand. And that's exactly what the task scheduler does: the thread doesn't sit idle waiting, it does its best to service available tasks. And, yes, if there is nothing left to do, then it does wait.

This is how the system ends up load balancing itself. ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70025</link>
      <pubDate>Tue, 07 Feb 2012 01:22:43 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70025</guid>
    </item>
    <item>
      <title>By stefan dyulgerov</title>
      <description><![CDATA[ Hi, 
I hope this page is looked at.
I have a questions, which is not related to the threading.

Can you point out with which method you generate spheres?

bool CMeshCube::Create( CGfx* pGfx,
                        float Spherity/* cube=0.0f, sphere=1.0f */,
                        float Length/* 1.0f */,
                        int SubdivisionCount /* 0 */ )


I have looked at different models,
I have managed to find
lat - lon sphere, cubed sphere, ying-yang and Icosahedral-triangles

However they do not look they you generate it.


 ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70942</link>
      <pubDate>Tue, 28 Feb 2012 02:41:41 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70942</guid>
    </item>
    <item>
      <title>By stefan dyulgerov</title>
      <description><![CDATA[ Hi, 
I hope this page is looked at.
I have a questions, which is not related to the threading.

Can you point out with which method you generate spheres?

bool CMeshCube::Create( CGfx* pGfx,
                        float Spherity/* cube=0.0f, sphere=1.0f */,
                        float Length/* 1.0f */,
                        int SubdivisionCount /* 0 */ )


I have looked at different models,
I have managed to find
lat - lon sphere, cubed sphere, ying-yang and Icosahedral-triangles

However they do not look they you generate it.

 ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70943</link>
      <pubDate>Tue, 28 Feb 2012 02:42:31 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70943</guid>
    </item>
    <item>
      <title>By Stefan Dyulgerov</title>
      <description><![CDATA[ Hi, 
I hope this page is looked at.
I have a questions, which is not related to the threading.

Can you point out with which method you generate spheres?

bool CMeshCube::Create( CGfx* pGfx,
                        float Spherity/* cube=0.0f, sphere=1.0f */,
                        float Length/* 1.0f */,
                        int SubdivisionCount /* 0 */ )


I have looked at different models,
I have managed to find
lat - lon sphere, cubed sphere, ying-yang and Icosahedral-triangles

However they do not look they you generate it.

 ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70944</link>
      <pubDate>Tue, 28 Feb 2012 02:45:48 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70944</guid>
    </item>
    <item>
      <title>By Jérôme Muffat-Méridol (Intel)</title>
      <description><![CDATA[ The code only knows how to make a cube, I use "cubed sphere": create a tesselated cube and project its vertices on a sphere 

That's what the method you found does: if Spherify is 0.0f, then you get a cube. if Spherify is 1.0f, then you get the projected-onto-a-sphere vertices. If you enter any value in between, you get interpolated values in between (ie you get a cube with rounded faces, or a sphere looking a little cubic, depending on the value you use). 

If you use values outside the [0.0f, 1.0f] range, then you'll get something a little bit crazy (and probably interesting too)

 ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70945</link>
      <pubDate>Tue, 28 Feb 2012 02:58:02 -0800</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-70945</guid>
    </item>
    <item>
      <title>By jlu_lb</title>
      <description><![CDATA[ good job， but i really need some samples about using this tiny scheduler on linux platform， would you like to show it？ ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72151</link>
      <pubDate>Wed, 28 Mar 2012 00:07:41 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72151</guid>
    </item>
    <item>
      <title>By jlu_lb</title>
      <description><![CDATA[ good job， i really need some samples about using this tiny scheduler on linux platform， do you have it to help me ? ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72170</link>
      <pubDate>Wed, 28 Mar 2012 02:11:35 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72170</guid>
    </item>
    <item>
      <title>By Jérôme Muffat-Méridol (Intel)</title>
      <description><![CDATA[ This sample is really very much centered around Windows, especially with the goal of fitting in the smallest possible executable... The task scheduler can probably be ported but I'm afraid my knowledge of Linux isn't good enough...

Unless code size is a central issue to your project, I'd recommend you look at Threading Building Blocks instead. It does more things, more efficiently, and is available across platforms. ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72172</link>
      <pubDate>Wed, 28 Mar 2012 02:19:22 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72172</guid>
    </item>
    <item>
      <title>By jlu_lb</title>
      <description><![CDATA[ Er....the Threading Building Blocks's scheduler is quite complicated though it's very powerful , i just want to use this tiny version to do some experiments, but platform need to be linux..... ]]></description>
      <link>http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72175</link>
      <pubDate>Wed, 28 Mar 2012 04:59:23 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling/#comment-72175</guid>
    </item>
  </channel></rss>
