По интернету гуляет мнение, что наиболее эффективно вычисления происходят на (количество_процессоров + 1) потоков. Где-нибудь есть обоснование этого дела?
Не вижу смысла доказывать очевидное. Вообще, это зависит от планировщика. Если он может выполнять один поток по очереди на нескольких процах, то тут выгода очевидна. Если же поток «приклеивается» с помощью affinity к одному ядру, очевидно, он не сможет дозагрузить остальные. У винды и линукса я видел, как однопоточное приложение периодически нагружает то одно, то второе ядро, а бывает, что и оба понемногу (но в сумме не больше 100%). Вот только период смены этой нагрузки не знаю.
1 ядро — один поток. Хочешь больше — указывай явно. n+1 нужен для того, чтобы полностью загружать 2 ядра. (ведь на 100% ни одно не будет загруженным, а только чуть больше половины). Обоснование есть где-то в доках openmp, например.
торсионные поля
Зависит от того, что потоки делают.
А сам не понимаешь, что ли? Если один или несколько процов внезапно окажутся чуточку недогруженными, их простой тут же сожрёт этот n+1-й поток.
вычисляют, без лишнего i/o
Ну тогда /3, да.
я не спрашивал еврикабабкиного мнения, я спрашивал материал с доказательством.
Не вижу смысла доказывать очевидное. Вообще, это зависит от планировщика. Если он может выполнять один поток по очереди на нескольких процах, то тут выгода очевидна. Если же поток «приклеивается» с помощью affinity к одному ядру, очевидно, он не сможет дозагрузить остальные. У винды и линукса я видел, как однопоточное приложение периодически нагружает то одно, то второе ядро, а бывает, что и оба понемногу (но в сумме не больше 100%). Вот только период смены этой нагрузки не знаю.
ок. Мне нужно на что-то в библиографии сослаться. Есть ссылочка, где это наблюдение описывается и поясняется?
это не так
эксперименты доказывают что так
мои эксперименты доказывают что это не так
быть может, чуть позже выложу свой отчёт
Запусти while true; do; done и посмотри на ядра. У меня грузит оба поровну, как ни странно. Хм.
потому что у тебя bfs
Хмм... Не подглядывай! >:E
я уже знаю фишку этого планировщика. Значит, метод N+1 потоков действует только для дефолтного планировщика задач?
Видимо, да. Сейчас мне лень ребутаться в родное для дебиана 39-е, но я помню, что там было такое поведение.
Посмотри попсовую книжку препода Торвальдса (который миникс зопейлил), там точно есть что-то такое.
Танненбаум ёпт. Я там буду год искать.
Да, он. А ты скажи что из ... очевидно следует...
я решил не говорить вообще. Как выяснилось, это описывался частный случай.
Ок
http://imgur.com/a/cXYbk
1 ядро — один поток. Хочешь больше — указывай явно. n+1 нужен для того, чтобы полностью загружать 2 ядра. (ведь на 100% ни одно не будет загруженным, а только чуть больше половины). Обоснование есть где-то в доках openmp, например.
БЛЯДЬ, ШТО.
да вы совсем охуели, мне после трёх лет курса параллельных вычислений ЖОПУ РВУТ ТАКИЕ ТРЕДЫ НАХУЙ
а по делу есть что сказать, жопорванец?