Читайте также:
|
|
В любой системе параллельной обработки процессоры, выполняющие разные части одной задачи, должны как-то взаимодействовать друг с другом, чтобы обмениваться данными. Как именно должен происходить этот обмен? Были предложены и реализованы две основополагающих модели: мультипроцессоры и мультикомпьютеры.
Мультипроцессоры. В первой модели все процессоры разделяют общую физическую память, как показано на рис.1.1. Такая система называется мультипроцессором или системой с совместно используемой памятью.
|
Мультипроцессорная модель распространяется и на программное обеспечение. Все процессы P, работающие вместе на мультипроцессоре, могут разделять одно виртуальное адресное пространство, отображенное в общую память. Любой процесс может считывать слово из памяти или записывать слово в память с помощью команд LOAD (загрузить) и STORE (запомнить). Два процесса могут обмениваться информацией, если один из них будет просто записывать данные в память, а другой будет считывать эти данные.
Благодаря такой возможности взаимодействия двух и более процессов мультипроцессоры весьма популярны. Данная модель понятна программистам и приложима к широкому кругу задач. Каждый из 16 процессоров запускает один процесс, которому приписана для анализа одна из 16 секций. Если процесс обнаруживает, что один из его объектов переходит через границу секции, этот процесс просто переходит вслед за объектом в следующую секцию, считывая слова из этой секции. Некоторые объекты обрабатываются несколькими процессами, поэтому в конце потребуется некоторая координация, чтобы определить количество объектов.
В качестве примеров мультипроцессоров можно назвать Sun Enterprise 10000, Sequent NUMA-Q, SGI Origin 2000 и HP/Convex Exemplar.
Мультикомпьютеры. Во второй параллельной архитектуре каждый процессор имеет свою собственную память, доступную только этому процессору.Такая модель называется мультикомпьютером или системой с распределенной памятью. Она изображена на рис. 1.2.
|
Ключевое отличие мультикомпьютера от мультипроцессора состоит в том, что каждый процессор в мультикомпьютере имеет свою собственную локальную память, к которой этот процессор может обращаться, выполняя команды LOAD и STORE, но никакой другой процессор не может получить доступ к этой памяти с помощью этих же команд. Таким образом, мультипроцессоры имеют одно физическое адресное пространство, разделяемое всеми процессорами, а мультикомпьютеры содержат отдельное физическое адресное пространство для каждого процессора. Поскольку процессы в мультикомпьютере не могут взаимодействовать друг с другом просто путем чтения из общей памяти и записи в общую память, здесь необходим другой механизм взаимодействия. Они посылают друг другу сообщения, используя сеть передачи сообщений.
В мультикомпьютере для взаимодействия между процессорами используются примитивы SEND (отправить) и RECEIVE (получить). Поэтому программное обеспечение мультикомпьютера имеет более сложную структуру, чем программное обеспечение мультипроцессора. При этом основной проблемой становится правильное разделение данных и разумное их размещение. В мультипроцессоре размещение частей не влияет на правильность выполнения задачи, хотя может повлиять на производительность. Таким образом, мультикомпьютер программировать гораздо сложнее, чем мультипроцессор.
В качестве примера мультикомпьютеров можно назвать IBM SP/2, Wisconsin COW и Intel Sandia Option Red.
Свойства мультипроцессорных и мультикомпьютерных систем. Пользователь параллельной системы желает знать о ней следующее:
1. Индекс производительности параллельной системы, характеризуемый отношением времени решения задачи на однопроцессорной системе к времени решения задачи в N -процессорной системе. Естественно, что пользователя устраивает, если время решения задачи сокращается в десятки, сотни, тысячи и т. д. раз.
2. Стоимость владения параллельной системой, например, в форме аренды, характеризующая стоимость решения задачи.
Владелец параллельной системы должен владеть нормативами производительности и стоимости своей системы, а также знаниями в области расширяемости (масштабируемости) системы.
Теоретический график зависимости индекса производительности параллельной системы от числа процессоров (компьютеров) в ней N представлен на рис. 1.3. Идеальное повышение производительности I представлено пунктирной линией, которая показывает,
что индекс производительности n -процессорной системы увеличивается с ростом числа процессоров в системе точно в n раз. Однако лишь немногие программы могут обеспечить высокую загрузку параллельной системы. Реальная загрузка представлена на рис.1.3 сплошной линией, которая отображает, что программы содержат в себе сугубо последовательные части: они имеют фазу инициализации, они должны передавать данные по системе коммуникаций и т.д.
Так, если программа выполняется на однопроцессорном компьютере за Т единиц времени и p -ая доля программы является сугубо последовательной, а -ая доля программы может быть распределена между n процессорами, то время выполнения программы в параллельной системе будет составлять единиц времени и индекс производительности n-процессорной системы составит
раз,
где . Это выражение называется законом Амдала и иллюстрируется рис.1.4.
Рис. 1.4. К закону Амдала
Закон Амдала устанавливает, что невозможно написать программу таким образом, чтобы были полностью загружены все процессоры в N -процессорной системе. Поэтому реальная производительность всегда ниже потенциальной производительности.
Стоимость параллельной системы для решения определенного класса задач является определяющей, во-первых, потому, что позволяет выбирать конкретную систему для решения конкретной совокупности задач. Чем ниже арендная плата, тем предпочтительнее соответствующая параллельная система.
Ясно, что сколько бы процессоров не содержала параллельная система ее пропускная способность, определяемая предельным количеством задач, обрабатываемых в единицу времени, всегда ограничена. Это утверждение справедливо и для 4–процессорной системы, и для 32-процессорной системы, и для параллельной системы, состоящей из 1024 компьютеров или из 16484 компьютеров. Важно понимать, что можно построить 128-процессоную систему на основе совместно используемой памяти, т.е. мультипроцессор, однако увеличить количество процессоров в 2 или более раз крайне сложно. Однако довольно легко построить компьютер с распределенной памятью, содержащий 10000 процессоров. Впрочем программировать мультипроцессор гораздо проще, чем программировать мультикомпьютер, поскольку в первую очередь мультипроцессор имеет доступ к любому слову, хранимому в памяти, а мультикомпьютер
обменивается данными только за счет пересылки сообщений.
Дата добавления: 2015-07-20; просмотров: 1611 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Введение | | | Организация параллельных вычислений |