реклама на сайте
подробности

 
 
> Многопроцессорность
procopus
сообщение Mar 16 2005, 20:43
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 28-11-04
Пользователь №: 1 250



Кто-нибудь подскажет? Какой будет эффект при использовании двух процессоров (например AMD 1.6 МГц) по сравнению с одним процессором (например самого быстрого из доступных сейчас) под WinXP при выполнении приложений типа Matlab'а?
И вообще, какой должна быть программа, чтобы использования многопроцессорности дало ощутимый выигрыш без использования специальных средств ручного распределения задач?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Harbour
сообщение Mar 17 2005, 05:52
Сообщение #2


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Не знаю как сделан matlab, но программа, которая реально покажет прирост на MP (70-100%) должна использовать нити. Если нет - то есть слабый выигрыш за счет того что kernel threads могут счедулится на одном проце, а прога на другом. Ну и если ос умеет - то еще распределяются прерывания между процами. Про "ручное распределения задач" непонятно. - имеется ввиду cpu affinity ?
Go to the top of the page
 
+Quote Post
olefil
сообщение Mar 17 2005, 07:26
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



Во-первых если речь идет про Opteron, так на нем только RedHat работает. На сколько я знаю винды пока не сделали под него. А сравнивать производительность WinXP и RedHat давольно сложно, хотя такие попытки делаются. Мне кажется, чтобы программа могла реально работать на 2-х процах или более она должна быть специально откомпилирована для этого, а иначе я думаю, что прирост если и будет, то такой мизирный, что о нем и говорить не стоит.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Mar 17 2005, 15:20
Сообщение #4


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Хотя товарищ про Opteron ничего не говорил, стоит отметить, что данный CPU в 32-битном режиме такой же как и остальные его собратья.
Go to the top of the page
 
+Quote Post
procopus
сообщение Mar 17 2005, 17:46
Сообщение #5





Группа: Новичок
Сообщений: 8
Регистрация: 28-11-04
Пользователь №: 1 250



Да, нити можно предусмотреть. Просто есть опасение, что будет потеря на обмене данными между ними (т.е.синхронизация данных в кэшах), который пока трудно прогнозировать.
Go to the top of the page
 
+Quote Post
olefil
сообщение Mar 18 2005, 16:32
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



Похоже даже тормознее...
Go to the top of the page
 
+Quote Post
olefil
сообщение Mar 18 2005, 16:37
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



Прирост производительности если и будет, то процентов 3-8 не более - это правило практически для всех систем справедливо, хотя конечно бывает и больше и подругому. Я помню когда делали прогу на 2-х процессорный вариант, так получили не прирост, а убыль скорости как раз при синхронизации потоков.
Go to the top of the page
 
+Quote Post
v_mirgorodsky
сообщение Mar 20 2005, 13:49
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804



Если задача по своей натуре однопоточная, то ее никак не разогнать на два процессора - нечего делить между процессорами, окромя системных нитей, прерываний и прочей ерунды. Однако в современных системах housekeeping очень оптимизирован, и получить существенный выигрыш (даже 2-3%) за счет введения двух- (много-) процессорнисти не поможет. Проверено с Dual-Xeon P4 2.4GHz.

Синхронизация данных в кешах процессоров - это даже не проблема. Если я не ошибаюсь, то кеш-контроллер P4 поддерживает то ли кеш-спуффинг, то ли кеш-снарфинг, короче - когерентность кешей поддерживается вне зависимости от распределения памяти и не приводит к лишним тактам ожидания - если верить тех. документации Intel smile.gif Не знаю как обстоят дела у AMD в этом вопросе.

О синхронизации потоков. Задачи выполняемые потоками должны быть максимально независимы друг от друга, занимать приблизительно равное время для выполнения и быть сравнительно объемными. Задача удовлетворяющая выше перечисленным критериям является идеальным кандидатом на распаралеливание и не будет страдать из-за проблем синхронизации между потоками, т.к. большинство своего времени потоки будут заниматься делом, а ждать друг друга будут мало.

Из практики. Писал многопоточный драйвер под USB. Получил реальный прирост производительности на двух-процессорной системе. Ручным расставлением affinity mask не занимался - 2k и XP с этим справляются и так хорошо.


--------------------
WBR,
V. Mirgorodsky
Go to the top of the page
 
+Quote Post
olefil
сообщение Mar 21 2005, 07:33
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



А под Linux на проца писали?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 20:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016