![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: -1 Всего: -1 |
Возможно ли на C# давать команды каждому камню в одельности, в случае если на тачке есть больше одного процессора?
|
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Распределением задач управляет операционная система, квантуя процессорное время между процессами-конкурентами. Таким образом, "многопроцессорность" выражается не столько архитектурой машины, сколько операционной средой. Последняя, как правило, способна действовать весьма гибко : на большинстве многопроцессорных машин исполнение в точном соответвии с заявленным пользователем механизмом разспределения трудозатрат явялется не более чем пожеланием, реально что-то может эмулироваться, рекомбинироваться, иначе трактоваться на более низком уровне. То есть, 100%-ого выражения ожидать не стоит.
Многопроцессорные машины бывают разные. В одних память общая, т.е., адресуется между всеми процессорами, в других - распределённая (кластеры), т.е. за каждым процессором физически закреплена своя собственная память, которую он один может адресовать. Ещё одна группа - грызущие гранит познания - масштабируемые (или grid-) системы. На разных уровнях архитектуры они комбинируют черты первых двух. Представители первой групы сейчас активно продвигаются на рынке десктопов, и, скорее всего, Ваша машина именно такая. В таком случае, неплохо будет знать о том, что, раз память общая, то наши крокодилы вынуждены постоянно разрешать конфликты доступа к ней : блокировать конкурентов при чтении/записи, сравнивать скопированное в кэш процессора значение с, может быть, уже кем-то изменённым значением, лежавшим в общей памяти. На всё это уходит время, в некоторых случаях, drammatically большое. Ещё одно узкое место - магнитные диски: если Ваша программа непрерывно жуёт диск, то что-либо распараллеливать вообще бессмысленно, поскольку, даже самая быстрая твёрдая память работает тысящекратно более медленно. Будте готовы, что Ваша программа потребует серьёзных переделок. Вообще, один только анализ программ перед распределением на большие многопроцессорные машины - это целая индустрия: построение графов/мультиграфов информационных зависимостей меджу переменными, раскрутка, перелопатка циклов и т.д. Всё потому, что люди надеются, что от старой последовательной проги останется хоть что-то. На самом деле, очень многое (почти всё) приходится писать заново по мотивам старого варианта. Поэтому советую, в первую очередь, всегда стараться по максимуму использовать существующие наработки, например, параллельные пакеты по вычислительным алгоритмам, над которыми не самые глупые люди сопели годами. Изобретение велосипедов в этой области 100% нерентабельно. Теперь, собственно, о C#. Вот, например, в этой статье человек показывает, каким образом с помощью ThreadPool организовать параллельное вычисление "идеально распределяемой" функции (Map), передаваемой как делегат. Это - одна из общих задач мультипроцессинга. Наверно, Вам имеет смысл эти задачи изучить в большом количестве - они будут, как строительные кирпичи: Вы сможете прикинуть, как реорганизовать вычисления в программе. Это сообщение отредактировал(а) marcusmae - 24.5.2007, 15:03 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |