1631124674-6a00ac47f208bd132d328527d69fe75d (848586), страница 2
Текст из файла (страница 2)
Стремление добиться максимальной производительности заставляет разработчиков при реализации механизма передачи сообщений учитывать особенности архитектуры многопроцессорной системы. Это способствует написанию более эффективных, но ориентированных на конкретный компьютер программ. Вместе с тем независимыми разработчиками программного обеспечения было предложено множество реализаций механизма передачи сообщений, независимых от конкретной платформы. Наиболее известными из них являются EXPRESS компании Parasoft и коммуникационная библиотека PVM (Parallel Virtual Machine), разработанная в Oak Ridge National Laboratory.
В 1994 г. был принят стандарт механизма передачи сообщений MPI (Message Passing Interface). Он готовился с 1992 по 1994 гг. группой Message Passing Interface Forum, в которую вошли представители более чем 40 организаций из Америки и Европы.
MPI - это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений. Поддерживаются интерфейсы для языков C и FORTRAN. В последнее время добавлена поддержка языка C++. Библиотека включает в себя множество функций передачи сообщений типа точка-точка, развитый набор функций для выполнения коллективных операций и управления процессами параллельного приложения. Основное отличие MPI от предшественников в том, что явно вводятся понятия групп процессов, с которыми можно оперировать как с конечными множествами, а также областей связи и коммуникаторов, описывающих эти области связи. Это предоставляет программисту очень гибкие средства для написания эффективных параллельных программ. В настоящее время MPI является основной технологией программирования для многопроцессорных систем с распределенной памятью.
Основная цель, которую ставили перед собой разработчики MPI - это обеспечение полной независимости приложений, написанных с использованием MPI, от архитектуры многопроцессорной системы, без какой-либо существенной потери производительности. По замыслу авторов это должно было стать мощным стимулом для разработки прикладного программного обеспечения и стандартизованных библиотек подпрограмм для многопроцессорных систем с распределенной памятью. Подтверждением того, что эта цель была достигнута, служит тот факт, что в настоящее время этот стандарт поддерживается практически всеми производителями многопроцессорных систем. Реализации MPI успешно работают не только на классических MPP системах (массивно-параллельные системы), но также на SMP (симметричная многопроцессорная архитектура, архитектура многопроцессорных компьютеров, в которой два или более одинаковых процессора сравнимой производительности подключаются единообразно к общей памяти и периферийным устройствам и выполняют одни и те же функции) системах и на сетях рабочих станций (в том числе и неоднородных).
MPP система (массивно-параллельные системы) строится из отдельных узлов, содержащих процессор, локальный банк оперативной памяти, коммуникационные процессоры или сетевые адаптеры, иногда — жёсткие диски и другие устройства ввода-вывода. Доступ к банку оперативной памяти данного узла имеют только процессоры из этого же узла. Узлы соединяются специальными коммуникационными каналами.
Гибридная архитектура NUMA
Главная особенность гибридной архитектуры NUMA (nonuniform memory access) – неоднородный доступ к памяти .
Гибридная архитектура совмещает достоинства систем с общей памятью и относительную дешевизну систем с раздельной памятью. Суть этой архитектуры – в особой организации памяти, а именно: память физически распределена по различным частям системы, но логически она является общей, так что пользователь видит единое адресное пространство. Система построена из однородных базовых модулей (плат), состоящих из небольшого числа процессоров и блока памяти. Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство, аппаратно поддерживается доступ к удаленной памяти, т.е. к памяти других модулей. При этом доступ к локальной памяти осуществляется в несколько раз быстрее, чем к удаленной. По существу, архитектура NUMA является MPP (массивно-параллельной) архитектурой, где в качестве отдельных вычислительных элементов берутся SMP (симметричная многопроцессорная архитектура, архитектура многопроцессорных компьютеров, в которой два или более одинаковых процессора сравнимой производительности подключаются единообразно к общей памяти и периферийным устройствам и выполняют одни и те же функции) узлы. Доступ к памяти и обмен данными внутри одного SMP-узла осуществляется через локальную память узла и происходит очень быстро, а к процессорам другого SMP-узла тоже есть доступ, но более медленный и через более сложную систему адресации.
Структурная схема компьютера с гибридной сетью: четыре процессора связываются между собой при помощи кроссбара в рамках одного SMP-узла. Узлы связаны сетью типа "бабочка" (Butterfly):
Обычно вся система работает под управлением единой ОС, как в SMP. Возможны также варианты динамического "подразделения" системы, когда отдельные "разделы" системы работают под управлением разных ОС. При работе с NUMA-системами, так же, как с SMP, используют так называемую парадигму программирования с общей памятью (shared memory paradigm).
OpenMP (Open Multi-Processing) — открытый стандарт для распараллеливания программ на языках Си, Си++ и Фортран. Даёт описание совокупности директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью.
OpenMP реализует параллельные вычисления с помощью многопоточности, в которой ведущий поток создаёт набор ведомых потоков, и задача распределяется между ними. Предполагается, что потоки выполняются параллельно на машине с несколькими процессорами (количество процессоров не обязательно должно быть больше или равно количеству потоков).
Видимо для NUMA используют и MPI и OpenMP???
Для Linux -- numactl - Control NUMA policy for processes or shared memory. numactl runs processes with a specific NUMA scheduling or memory placement policy. The policy is set for command and inherited by all of its children. In addition it can set persistent policy for shared memory segments or files.
Подробнее -- http://window.edu.ru/resource/603/64603/files/Levin_Parallelnoye_program_978-5-94774-857-4/Glava1_cB857-4.pdf
4.История первых вычислительных устройств от Б. Паскаля до Ч. Бэббиджа
-
Блез Паскаль – автор первой работающей машины (1642 г.) 50 моделей, 8 существуют сейчас. Машина Паскаля представляла собой механическое устройство в виде ящичка с многочисленными связанными одна с другой шестерёнками. Складываемые числа вводились в машину при помощи соответствующего поворота наборных колёсиков. На каждое из этих колёсиков, соответствовавших одному десятичному разряду числа, были нанесены деления от 0 до 9. При вводе числа колесики прокручивались до соответствующей цифры. Совершив полный оборот, избыток над цифрой 9 колёсико переносило на соседний разряд, сдвигая соседнее колесо на 1 позицию. Первые варианты «Паскалины» имели пять зубчатых колёс, позднее их число увеличилось до шести или даже восьми, что позволяло работать с большими числами, вплоть до 9 999 999. Ответ появлялся в верхней части металлического корпуса. Вращение колёс было возможно лишь в одном направлении, исключая возможность непосредственного оперирования отрицательными числами. Тем не менее машина Паскаля позволяла выполнять не только сложение, но и другие операции, но требовала при этом применения довольно неудобной процедуры повторных сложений. Вычитание выполнялось при помощи дополнений до девятки, которые для помощи считавшему появлялись в окошке, размещённом над выставленным оригинальным значением.
-
Вильям Шиккард (Тюбинген) – Считающие часы Вильгельма Шиккарда — придуманный в 1623 году Вильгельмом Шиккардом первый арифмометр, первое счетное устройство. Неизвестно, была ли собрана реально действующая модель машины при жизни ученого.
Был способен выполнять четыре арифметических действия над шестиразрядными числами. Считающими часами устройство было названо потому, что, как и в настоящих часах, работа механизма была основана на использовании звёздочек и шестерёнок. Это изобретение нашло практическое использование в руках друга Шиккарда, философа и астронома Иоганна Кеплера.
-
Леонардо да Винчи (1492 год) в одном из своих дневников приводит эскиз 13-разрядного суммирующего устройства с десятизубцовыми кольцами. Хотя работающее устройство на базе этих чертежей было построено только в XX веке, всё же реальность проекта Леонардо да Винчи подтвердилась. Основу счетной машины составляли стержни с двумя зубчатыми колесами, большое - с одной стороны и маленькое - с другой. Как видно из эскиза Леонардо да Винчи, эти стержни располагались так, чтобы маленькое колесо на одном стержне входило в сцепление с большим колесом на соседнем стержне. Таким образом десять оборотов первого стержня приводили к одному полному обороту второго стержня, а десять оборотов второго - к одному полному обороту третьего стержня и так далее. Вся система состояла из тринадцати стержней и приводилась в движение набором грузов.
-
Готфрид Вильгельм Лейбниц немецкий ученый создал в 1670 году собственную конструкцию счетной машины, которая могла воспроизводить сложение, вычитание, умножение и деление. Её называли калькулятор Лейбница. Поворотом циферблата задавалось значение разряда множимого. Для умножения достаточно ввести число один раз и повернуть ручку главного приводного колеса столько раз, чему равен множитель. В окне появляется результат. Лейбниц придумал, как можно передвигать множитель, для того, чтобы производить умножение на единицы, десятки и сотни и т.д. Для этого устройство разделялось на подвижную и неподвижную части. В подвижной части размещалось главное приводное колесо, вспомогательный счетчик и установочная часть устройства ввода множимого. Подвижная часть впоследствии получила название каретки и входила в состав арифмометров, создаваемых позднее. Неподвижная часть состояла из основного счетчика и ступенчатых валиков ввода множимого. Для сдвига множимого применялось вспомогательное приводное колесо. https://commons.wikimedia.org/wiki/File:Cylindre_de_Leibniz_anim%C3%A9.gif?uselang=ru -- колесо лейбница (основной элемент)
-
В 1818 г. К. Томас, воспользовавшись идеями знаменитого немецкого ученого Готфрида Лейбница (1646–1716), изобрел счетную машину для выполнения четырех арифметических действий и назвал ее арифмометром. В машине Г. Лейбница следует отметить два блестящих решения: использование ступенчатых валиков для установки чисел и передачи десятков, которые впоследствии получили название "ступенчатых валиков Лейбница", а также разделение машины на подвижную и неподвижную части, обеспечивающие возможность умножения многозначных чисел.Основу конструкции арифмометра К. Томаса составили ступенчатые валики Г. Лейбница. Одному разряду соответствовал один ступенчатый валик. Против каждого валика находилась установочная зубчатка, которая могла двигаться вдоль четырехгранной оси с помощью ползуна, заканчивающегося на лицевой панели кнопкой. При установке чисел кнопка свободно передвигалась по прорезям-разрядам, тем самым передвигая установочную зубчатку по оси до ее совпадения с нужной цифрой. Вращая с помощью рукоятки ступенчатые валики, зубчатка входит в зацепление с соответствующим числом ступенек на валике и поворачивает его на тот или иной угол. На осях находятся промежуточные шестерни, которые передают это вращение цифровому колесу счетчика.
-
Ра́зностная маши́на Чарльза Бэббиджа (1843) — механический аппарат, изобретённый английским математиком Чарльзом Бэббиджем, предназначенный для автоматизации вычислений путём аппроксимации функций многочленами и вычисления конечных разностей. Возможность приближённого представления в многочленах логарифмов и тригонометрических функций позволяет рассматривать эту машину как довольно универсальный вычислительный прибор. Несмотря на то, что разностная машина не была построена её изобретателем, для будущего развития вычислительной техники главным явилось другое: в ходе работы у Бэббиджа возникла идея создания универсальной вычислительной машины, которую он назвал аналитической и которая стала прообразом современного цифрового компьютера. В единую логическую схему Бэббидж увязал арифметическое устройство (названное им «мельницей»), регистры памяти, объединённые в единое целое («склад»), и устройство ввода-вывода, реализованное с помощью перфокарт трёх типов. Перфокарты операций переключали машину между режимами сложения, вычитания, деления и умножения. Перфокарты переменных управляли передачей данных из памяти в арифметическое устройство и обратно. Числовые перфокарты могли быть использованы как для ввода данных в машину, так и для сохранения результатов вычислений, если памяти было недостаточно.
5.История первых релейных и электронных ВМ ( Киселёва)
Впервые автоматически действующие вычислительные устройства появились в середине XX века. Это стало возможным благодаря использованию наряду с механическими конструкциями электромеханических реле.