Интересуют некоторые аспекты реализации современных реализаций OpenMP. Какая именно реализация OpenMP - не важно, подойдёт любая. Если по нескольким, то ещё лучше.
1. Какой тип планировщика работы (scheduler) используется? Централизованный/распределенный, распределние работы (work distribution)/кража работы (work stealing) и т.д.
2. Сколько потоков создаётся изначально по-умолчанию? Создаются ли дополнительные потоки во время выполнения по каким-либо причинам?
3. Как реализуются критические секции? Блокировка в ядре/активное спин-ожидание/пассивное спин-ожидание/адаптивный.
4. Может ли один ядерный поток выполнять несколько элементов работы одновременно? Т.е. используются ли т.н. легковесные потоки/фиберы?
Заранее спасибо Дмитрий Вьюков
|