Previous | Next --- Slide 14 of 48
Back to Lecture Thumbnails
toutou

What is dynamic assignment? Is that programCount can be changed with different hardware, or it can be set as different value in a specific hardware?

kayvonf

@toutou: dynamic assignment means that the assignment of work to workers (elements to instances in this example) is determined as the program runs. This is opposed to static assignment, where that mapping is known a priori, like on the left.

BigFish

I think what kayvonf means about static assignment is lec 3 slide 22. Current ISPC implementation assign elements to program instances interleavingly. However, in the abstraction level, we can simply use foreach without caring about the underlying implementation. So, it is impossible for ISPC to change the static interleaved assignment manner into dynamic assignment, like ISPC may decide to assign which elements are fed to which program instances according to some runtime metrics. And one example of dynamic assignment is in lec 4 slide 16. ISPC do not assign tasks to worker threads in advance. Instead, the worker thread will fetch one more task to do if it finished its current task.

Corian

When it says current ISPC implementation is static, does that mean they are working towards creating a dynamic implementation or is that too much overhead or just too complex to create? Considering assignment 1, it would be pretty amazing if you didn't have to worry about divergence as much.

yuel1

@Corian, While that might be really nice thing in theory, I'm willing to bet that for most work loads, a static interleaved assignment is "good enough" and the additional overhead to implement dynamic assignment is simply not worth it.