35 / 22 / 5
Регистрация: 27.06.2010
Сообщений: 86
1

boost threads - время исполнения программы флуктуирует. Почему?

12.04.2011, 22:23. Показов 1545. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа, написанная с использованием библиотеки boost-threads. Программа параллельно считает интеграл. Имеется 2 нити исполнения, каждая нить считает свой кусок интервала. На двух ядрах программа исполняется ~50 секунд (real time). Но результат все время варьирует в пределах 5сек.

Почему такое происходит?
Что это, кеширование инструкций, флуктуации тактовой частоты процессора, причуды операционной системы по планированию исполнения процессов/потоков или это boost шалит? Вопрос именно в том, чем это вызвано и можно ли сделать так, чтобы флуктуации были меньше?

Почему при использовании нечетного числа нитей 2m+1 программа исполняется чуть быстрее, чем при использовании четного 2m (m=1, 2, 3, ...), хотя ядер всего 2?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2011, 22:23
Ответы с готовыми решениями:

Разное время исполнения программы
"Баловался" с кодом питона и наткнулся на интересный результат: один и тот же код выполняется...

Ошибки во время исполнения программы
Приветствую всех форумчян. Во время исполнения программы система выдает 2 ошибки (см. вложения)....

Создание объектов во время исполнения программы
ну от должна вона работать,а не работает,викладою.там все далжно работать,нзнаю.там описание только...

Определение функции во время исполнения программы
Добрый день! Прошу помощи. Скажите, реально ли определить функцию во время исполнения...

2
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
13.04.2011, 03:21 2
во первых - распределение ресурсов, привилегия ОС. и не boost.thread, ни pthread ни имеют к этому ни какого отношения.

конкретные вопросы пожалуйста.
0
35 / 22 / 5
Регистрация: 27.06.2010
Сообщений: 86
13.04.2011, 10:41  [ТС] 3
Цитата Сообщение от niXman Посмотреть сообщение
во первых - распределение ресурсов, привилегия ОС. и не boost.thread, ни pthread ни имеют к этому ни какого отношения.

конкретные вопросы пожалуйста.
1. Почему такое происходит? (олин раз запускаю - 50 сек, второй раз - 45: ОС целых пять секунд в первом опыте не давала моему процессу ресурсы?)

2. Почему при использовании нечетного числа нитей 2m+1 программа исполняется чуть быстрее, чем при использовании четного 2m (m=1, 2, 3, ...), хотя ядер всего 2? Чем не конкретный вопрос.

Цитата Сообщение от niXman Посмотреть сообщение
во первых - распределение ресурсов, привилегия ОС. и не boost.thread, ни pthread ни имеют к этому ни какого отношения.
А во-вторых? Конкретные ответы пожалуйста
0
13.04.2011, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2011, 10:41
Помогаю со студенческими работами здесь

boost threads
#include <iostream> #include <boost/thread/thread.hpp> void hello_world() { std::cout <<...

Оценить время исполнения программы, собственные команды
Нашел старую задачу, долго над ней думал, кое-что наработал, но не решил Реализовал почти все...

Изменение значения Label во время исполнения программы
В поле edit ввожу строку, как реализовать подсчет длины строки в поле Label во время ввода(т.е....

Как определить платформу во время исполнения программы?
Коллеги ! Кто знает, как во время исполнения программы на Java определить под какой операционкой...

boost::threads vs gcc 4.8.2
Добрый день, ребят такая проблема, на centos 6.3 стояли gcc 4.4.x и boost версию точно не знаю,...

Исполнение функций подгружаемых во время исполнения программы из сторонних хранилищ
День добрый, отзывчивые, знающие, смекалистые. Не знаю как чётко сформулировать вопрос, поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru