Open abouteiller opened 2 years ago
Is it possible to use a 64-bit priority instead of 32-bit? That allows MT up to 2–2.6M, which should be more than sufficient. That still requires annoying changes on the PaRSEC side, but maybe not as invasive as for a floating-point priority.
It is always possible, but the task_s is actually quite packed and tightly aligned. Increasing the size of the priority field to an int64_t will increase the size of the parsec_task_s struct by 8 bytes, and push a lot of things into the next cache line.
That being said, we had a parallel discussion about improving the chores mask to be able to limit the migration opportunities for a task. We should be able to combine these two ideas and use the extra space provided by increasing the size of the priority
field for the chose_mask
field (which is currently an uint8_t and could be transitioned to an uint32_t).
icldisco/parsec#706
Describe the bug
Priorities can overflow for plausible values of MT (e.g., running with M=500k, MB=180 results in MT >1500, which would overflow the priorities an cause scheduling to try to run in the 'wrong' order).
Additional context
https://github.com/ICLDisco/dplasma/pull/53#discussion_r893839754
Possible fixes