Здравствуйте, remark, Вы писали:
R>Здравствуйте, sof.bix, Вы писали:
SB>>Здравствуйте, remark, Вы писали:
R>>>Помогло?
SB>>Нет. Потери в некоторых случаях даже выросли.
SB>>А что вы думаете о взаимодействии двух шедулеров (осевого и опенМП)?
SB>>Есть подозрение что при любом типе планировки потери неизбежны.
SB>>На днях попробовал просто запускать 4 процесса по 3 нити на 4-х ядрах. Потери ~3%
R>Я не очень понял, потери относительно чего? На ~3% стало медленнее отночительно чего?
R>Небольшой оверхед шедулер OpenMP, естественно, вносит. Например, если размер одной задачи, выделяемой потоку, равен 10'000 тактов, то оверхед может составлять как-раз ~3%.
R>Если размер задачи 10 тактов, то оверхед может составлять ~3000%.
R>Вот тут я тоже не очень понял:
R>"У меня скорость сильно падает по отношению с нераспараллеленой версией кода пи запуске 8 процессов на 4-ядерной архитектуре."
В общем сравнивалось время выполнения двух версий программы. В ней есть параллельно идущие и нераспараллеленые куски кода, выполняющиеся по одиночке примерно за 200сек. Одна была с отключеной поддержкой OpenMP, другая включеной (число потоков=числу ядер фиксированно). Запуск разных версий шел естественно последовательно, но в разных, параллельно идущих, количествах копий . 4-8. Скорость падала при количестве процессов, сравнимым с количеством ядер.
Вспомним что процессор 4-х ядерный
R>А при запуске 2 процессов? Ускоряется?
(должно быть ускоряется, но не тестировалось)
R>А при запуске 4 процессов? Ускоряется?
замедляется ~10%
R>Т.е. именно при запуске 8 замедление?
еще медленней 10-20%
А один процесс — естественно быстрее раза в три
R>
Коллективная мысль наводит что дело в Виндовом шедулере, т.е. под саляркой меньшие потери будут!?