Does OpenMP provide any way to control mapping of work to processors? For example in assignment 3 we have 200+ threads and 61 cores. Or is that entirely handled behind the scenes as described in the work stealing lecture?
traveling_saleswoman
@ArbitorOfTheFountain I don't know if OpenMP does let you get into the specifics of mapping control of work to processors, but I do know it lets you specify the type of scheduling that it does: static or dynamic. Static scheduling assigns each thread a given chunk of work, while dynamic scheduling puts the work in a work queue and assigns the work to threads as they become free. I don't believe there should be work stealing, as it seems there is one internal work queue that all threads get assigned work from.
Does OpenMP provide any way to control mapping of work to processors? For example in assignment 3 we have 200+ threads and 61 cores. Or is that entirely handled behind the scenes as described in the work stealing lecture?
@ArbitorOfTheFountain I don't know if OpenMP does let you get into the specifics of mapping control of work to processors, but I do know it lets you specify the type of scheduling that it does: static or dynamic. Static scheduling assigns each thread a given chunk of work, while dynamic scheduling puts the work in a work queue and assigns the work to threads as they become free. I don't believe there should be work stealing, as it seems there is one internal work queue that all threads get assigned work from.
OpenMP loop scheduling documentation: https://software.intel.com/en-us/articles/openmp-loop-scheduling
OpenMP does allow you to set affinity.