Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопроцессорные системы? давать команды каждому камню в отдельнос 
:(
    Опции темы
Competitor
Дата 24.5.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: -1
Всего: -1



Возможно ли на C# давать команды каждому камню в одельности, в случае если на тачке есть больше одного процессора?
PM MAIL WWW   Вверх
marcusmae
Дата 24.5.2007, 14:41 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Распределением задач управляет операционная система, квантуя процессорное время между процессами-конкурентами. Таким образом, "многопроцессорность" выражается не столько архитектурой машины, сколько операционной средой. Последняя, как правило, способна действовать весьма гибко : на большинстве многопроцессорных машин исполнение в точном соответвии с заявленным пользователем механизмом разспределения трудозатрат явялется не более чем пожеланием, реально что-то может эмулироваться, рекомбинироваться, иначе трактоваться на более низком уровне. То есть, 100%-ого выражения ожидать не стоит.

Многопроцессорные машины бывают разные. В одних память общая, т.е., адресуется между всеми процессорами, в других - распределённая (кластеры), т.е. за каждым процессором физически закреплена своя собственная память, которую он один может адресовать. Ещё одна группа - грызущие гранит познания - масштабируемые (или grid-) системы. На разных уровнях архитектуры они комбинируют черты первых двух.

Представители первой групы сейчас активно продвигаются на рынке десктопов, и, скорее всего, Ваша машина именно такая. В таком случае, неплохо будет знать о том, что, раз память общая, то наши крокодилы вынуждены постоянно разрешать конфликты доступа к ней : блокировать конкурентов при чтении/записи, сравнивать скопированное в кэш процессора значение с, может быть, уже кем-то изменённым значением, лежавшим в общей памяти. На всё это уходит время, в некоторых случаях, drammatically большое. Ещё одно узкое место - магнитные диски: если Ваша программа непрерывно жуёт диск, то что-либо распараллеливать вообще бессмысленно, поскольку, даже самая быстрая твёрдая память работает тысящекратно более медленно.

Будте готовы, что Ваша программа потребует серьёзных переделок. Вообще, один только анализ программ перед распределением на большие многопроцессорные машины - это целая индустрия: построение графов/мультиграфов информационных зависимостей меджу переменными, раскрутка, перелопатка циклов и т.д. Всё потому, что люди надеются, что от старой последовательной проги останется хоть что-то. На самом деле, очень многое (почти всё) приходится писать заново по мотивам старого варианта. Поэтому советую, в первую очередь, всегда стараться по максимуму использовать существующие наработки, например, параллельные пакеты по вычислительным алгоритмам, над которыми не самые глупые люди сопели годами. Изобретение велосипедов в этой области 100% нерентабельно.

Теперь, собственно, о C#. Вот, например, в этой статье человек показывает, каким образом с помощью ThreadPool организовать параллельное вычисление "идеально распределяемой" функции (Map), передаваемой как делегат. Это - одна из общих задач мультипроцессинга. Наверно, Вам имеет смысл эти задачи изучить в большом количестве - они будут, как строительные кирпичи: Вы сможете прикинуть, как реорганизовать вычисления в программе.

Это сообщение отредактировал(а) marcusmae - 24.5.2007, 15:03


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.