Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Многопроцессорность  (Прочитано 8774 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Procopus
Гость
« : 16-03-2005 20:40 » 

Кто-нибудь подскажет? Какой будет эффект при использовании двух процессоров (например AMD 1.6 МГц) по сравнению с одним процессором (например самого быстрого из доступных сейчас) под WinXP при выполнении приложений типа Matlab'а?

И вообще, какой должна быть программа, чтобы использования многопроцессорности дало ощутимый выигрыш без использования специальных средств ручного распределения задач?
« Последнее редактирование: 17-12-2007 05:07 от Алексей1153++ » Записан
Alf
Гость
« Ответ #1 : 16-03-2005 22:37 » 

Реальное ускорение может варьироваться от полного отсутствия ускорения (в случае, если задача распараллеливанию не подлежит и второму процессору попросту нечего делать) до ускорения в примерно 1.5~1.7 раз (для хорошо спроектированных и хорошо сбалансированных многопоточных приложений).

На практике у меня почти всегда получалось, что из-за дороговизны двухпроцессорных плат дешевле обходится однопроцессорное решение с удвоенной тактовой частотой, тем более что в этом случае параллелизм приложения не играет никакой роли.
Записан
Procopus
Гость
« Ответ #2 : 17-03-2005 04:46 » 

Спасибо. То есть как я понял, на приложении без специального ручного разбиения эффект трудно получить - если, например, взять готовую программу (типа того же матлаба, или САПР, в которой специально многопроцессорность не предусматривалась) и запустить ее на двухпроцессорной машине, ощутимого выигрыша не будет.
Записан
Alf
Гость
« Ответ #3 : 17-03-2005 07:19 » 

Совершенно правильно. Это как раз один из тех случаев, когда одна женщина может произвести на свет дитя за 9 месяцев, а две за 4.5 месяца никак не управятся.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 17-03-2005 07:35 » 

Еще стоит упомянуть что сама Винь не приспособлена для распараллеливания нагрузки на несколько процессоров. Если только она не специализированный сервер, для многопроцессорных платформ.

Так что дома иметь двух процессорную систему совершенно бессмысленно.
Записан

А птичку нашу прошу не обижать!!!
Alf
Гость
« Ответ #5 : 17-03-2005 15:25 » 

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

А дома, конечно же, иметь двухпроцессорную систему в настоящее время бессмысленно. Не потому, что такая система не имеет смысла сама по себе, а лишь по экономическим причинам - покупка двухпроцессорной платформы обходится существенно дороже, чем однопроцессорной с вдвое более высокой тактовой частотой. Если бы было наоборот, лично я бы от такой не отказался.
Записан
Procopus
Гость
« Ответ #6 : 17-03-2005 17:44 » 

Да, приложение можно построить в виде нескольких потоков. Просто есть опасения, что будут большие накладные расходы в случае, когда разные процессоры начнут работать с общими данными, а такое в моей задаче возможно. На этот счет краем уха слышал про AMD'шную технологию, которая делает обмен не кэш1-память-кэш2, а напрямую  кэш1-кэш2.
« Последнее редактирование: 20-12-2007 19:43 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines