@suninhouse Static assignment is not necessarily determined at compile time (see previous slide [5]), it may depend on runtime parameters like "input data size" or "number of threads." Rather, static assignment is just a clear assignment of how data will be distributed, as opposed to doing something like splitting into several tasks, adding them to a queue, and letting threads decide what to run based on their workload (which may vary).
How often in practice does the programmer know enough about the costs for a static assignment to be more useful than a dynamic or semi-static assignment? The circumstances when we do know enough about each task to make a good static assignment seem a little bit contrived like computing the Mandelbrot set.
I think programmers are notoriously bad at estimating the behavior of the programs, but in practice several iterations of performance profiling and tuning can definitely help.
Please log in to leave a comment.
Static assignment essentially means that the assignment is determined at compile time and it is expected to be å reasonable assignment for all possible tasks, which if untrue, should consider dynamic assignments.