Достоинства облачных вычислений:
•отказоустойчивость;
•безопасность;
•высокая скорость обработки данных;
•снижение затрат на аппаратное и программное обеспечение, на обслуживание и электроэнергию;
•экономия дискового пространства (и данные, и программы хранятся в интернете).
Недостатки облачных вычислений:
•зависимость сохранности пользовательских данных от компаний, предоставляющих услугу cloud computing;
•появление новых («облачных») монополистов.
8.5.Заключение
Общее соображение, обосновывающее обще значимость технологий, развиваемых в рамках метакомпьютерного направления, состоит в том, что современные ОС во все большей степени становятся, завязаны на Сеть, ориентируясь на коллективные и мобильные формы работы пользователей с прямым доступом к общей информации и ПО. Это определяет общую направленность движения.
Во-вторых, на массовом рынке наметилась тенденция в сторону параллелизации и серийно выпускаемых архитектур (рядовыми стали многопроцессорные RISC-серверы и ПК с 4–8 процессорами Intel), и ОС, и работающих в них приложений. Все ведущие производители, выпуская свои ОС, делают одну версию для всего ряда машин – от рабочих станций до суперкомпьютеров, так что фактически даже на простейших однопроцессорных компьютерах есть как базовая, так и инструментальная поддержка параллельных вычислений.
Метакомпьютерный подход, ставя проблему создания полной среды и инфраструктуры для сетевых вычислений, определяет один из возможных контекстов, в котором перечисленные методы могут занять свое место.
Конкретно, интерес представляют работы по:
•глобальным файловым системам,
•системам сертификации и авторизации пользователей,
•оптимизации сетевой передачи данных,
•управлению ресурсами, планированию и диспетчеризации процессов.
Сейчас условия для участия в общем движении в области метакомпьютинга достаточно благоприятны – тексты разработанного ПО обычно открыты, есть
122
оперативный доступ по WWW к планам разработчиков и документации, можно принимать участие в обсуждении проблем по электронной почте.
В MIMD могут возникнуть проблемы взаимной блокировки и состязания за обладание ресурсами, так как потоки, пытаясь получить доступ к ресурсам, могут столкнуться непредсказуемым способом. MIMD требует специального кодирования в операционной системе компьютера, но не требует изменений в прикладных программах, кроме случаев, когда программы сами используют множественные потоки (MIMD прозрачен для однопоточных программ под управлением большинства операционных систем, если программы сами не отказываются от управления со стороны ОС). И системное, и пользовательское программное обеспечение, возможно, должны использовать программные конструкции, такие, как семафоры, чтобы препятствовать тому, чтобы один поток вмешался в другой, в случае если они содержат ссылку на одни и те же данные. Такое действие увеличивает сложность кода, снижает производительность и значительно увеличивают количество необходимого тестирования, хотя обычно не настолько, чтобы свести на нет преимущества многопроцессорной обработки.
Подобные конфликты могут возникнуть на аппаратном уровне между процессорами, и должны обычно решаться аппаратными средствами, или комбинацией программного обеспечения и оборудования.
Введение
Мы используем персональные компьютеры в нашей повседневной жизни, когда мы используем различные приложения в офисе, в образовании, в управлении производством, когда мы играем в разные игры. При всем при этом компьютеры кажутся очень удобными и простыми в использовании. Однако при работе с очень сложными и трудными вопросами и задачами все обстоит наоборот.
Термин вошел в широкое употребление с появлением первых компьютеров, которые не были способны своевременно решать поставленную задачу. Идея заключалась в том, чтобы побудить больше компьютеров выполнять одну и ту же задачу одновременно, если один компьютер не мог выполнить данную задачу. Идея была очень полезной, но первые компьютеры были слишком большими, неудобными и технически несовместимыми. Позже, с развитием технологий, эти возможности стали реализовываться.
Основная часть
В первую очередь необходимо ответить на вопрос, нужно ли заниматься параллельным программированием на компьютере. Но это не единственный вопрос, на который я хочу получить ответ. Вот почему так же важно понимать, что предстоит пройти в следующих вычислениях из простого, прямолинейного, понятного мира, где трудно понять мир параллельных вычислений. Каковы преимущества параллельных вычислений и какие проблемы ждут программиста при создании приложений, ориентированных на параллельные вычисления. Чтобы ответить на эти вопросы, давайте бросим беглый взгляд на историю развития компьютеров. Первые компьютеры были построены по принципам, разработанным фон Нейманом. У них было три основных компонента: память, процессор и набор внешних устройств, обеспечивающих ввод и вывод данных. Для первых компьютеров с многоуровневой памятью и внешней памятью и внутренней памятью — оперативная память и память реестра. Внешняя память (магнитная лента, перфокарта, диски) позволяла хранить программное обеспечение и данные вне зависимости от того, включен компьютер или нет. Внутренняя память хранит информацию только за период сеанса работы с компьютером. При выключении компьютера содержимое внутренней памяти теряется. Чтобы программа работала на компьютере, ее нужно было загрузить в оперативную память. Он сохраняется как данные, обработанные в этой программе. Принцип программы, хранящейся в памяти, является одним из основных принципов компьютеров фон Неймана. При расчете использовалась память реестра. Перед выполнением каких-либо операций с данными данные должны быть помещены в регистры. Этот тип оперативной памяти обеспечивал требуемое быстродействие при выполнении операций с данными. Выполнение всех операций - Данные и операции по управлению вычислительным процессом выполнялись процессором.
Процессор компьютера имел свои собственные инструкции. Этот набор был универсальным для расчета потенциальной вычислительной функции. С другой стороны, этот инструмент обеспечил относительную простоту написания программ людьми. Программы для первых компьютеров представляют собой серию команд, включенных в текущий набор команд процессора. Запустить программу на компьютере было очень просто. Каждый раз, когда программа выполняется на компьютере. Процессор выполнил серию последовательных команд в соответствии с программой. Все ресурсы компьютера - память, процессорное время, все устройства - были в полном распоряжении программы и ничто не мешало ее работе (не считая человека, конечно). Параллелизм был незаметен. Этот идеал просуществовал недолго из-за неэффективного использования совсем недорогих компьютерных ресурсов. Компьютеры не выключались, одна программа сменяла другую. Совсем недавно в компьютере, наряду с процессором, были дополнительные процессоры, известные как CPU, прежде всего специальные процессоры для устройств ввода/вывода, которые отвечали за выполнение медленных команд. Это позволяло одновременно запускать на компьютере несколько программ — публиковать результаты программы, вторую — запускать, а третью — создавать массовый режим выполнения программы для ввода данных, например, с магнитной ленты или другого внешнего устройства. средний. Революционным шагом стало появление в 1964 году операционной системы IBM — OS 360. Операционная система, возникшая на компьютере, стала его единственным хозяином — всем управляющим ресурсами. Теперь программа пользователя может выполняться только под управлением операционной системы. Операционная система позволяла решать две важные задачи: с одной стороны, оказывать необходимую услугу сразу всем программам, работающим на компьютере, а с другой — эффективно использовать и распределять имеющиеся ресурсы между программами, претендующими на эти ресурсы. Появление операционных систем привело к переходу от однопрограммного режима к многопрограммному, когда в одной и той же программе одновременно находится несколько программ. Большая часть программирования — это не параллельное программирование, а шаг к параллельным вычислениям. Мультипрограммирование — это параллельное выполнение нескольких программ.
Множественное программирование позволяет сократить общее время на их выполнение. Параллельные вычисления предполагают параллельный запуск одной и той же программы. Параллельные вычисления позволяют сократить время выполнения программы. Для большинства программ очень важно, чтобы компьютер имел несколько процессоров. Достаточно иметь операционную систему, организующую взаимодействие процессоров для выполнения большей части программирования. Для параллельных вычислений есть дополнительное требование к самой программе - программа должна уметь распараллеливать счета, ведь появление операционной системы означает, что компьютер нельзя считать аппаратным (память, процессоры, другие устройства). Теперь он состоит из двух частей: hard (жесткой) и soft (мягкой) — взаимодополняющих аппаратно-программных компонентов. Более чем за полвека компоненты стали быстро развиваться, сделав привычным для приборостроения экспоненциальный рост, что и отразилось в известном эмпирическом законе Мура — росли все важные признаки — объем памяти на всех уровнях, уменьшалось время доступа к памяти, быстродействие процессора. Согласно закону Мура (Гордон Мур, один из основателей Intel), значения характеристик удваивались каждые шесть месяцев. Увеличилось и количество процессоров, встроенных в компьютер. Изменилась и архитектура компьютера. Эти изменения во многом были шагами к параллельному учету. Вот некоторые изменения в архитектуре процессора, непосредственно связанные с процессом распараллеливания: Обработка командной строки. Процесс выполнения процессором потока команд больше не рассматривается как последовательное выполнение команды. Процесс обработки потока команд осуществлялся в конвейере, так что несколько заказов были подготовлены к выполнению одновременно. Несвязанные команды могут выполняться одновременно, что уже является настоящим параллелизмом. «Длинные команды». Архитектура некоторых компьютеров включает в себя несколько процессоров, которые позволяют им выполнять логические и арифметические операции над целыми числами, в то время как несколько процессоров выполняют операции над числами с плавающей запятой. Длинная команда позволяла указать действия, которые должен был выполнять каждый из существующих процессоров, в одной команде. Это позволило реализовать параллелизм на аппаратном уровне векторных и матричных процессоров. Набор инструкций этих процессоров включает основные операции над векторами и матрицами. Например, одна группа может добавить две матрицы. Такая команда выполняет параллельные вычисления. Эти операции распространены в приложениях, которые составляют основу обработки данных. Параллельная обработка данных позволяет значительно повысить эффективность приложений этого класса. Еще один важный тип ПО, работающий параллельно на программном уровне, — это интенсивная работа с графическими изображениями. Эта обработка выполняется графическими процессорами. Графическое изображение можно рассматривать как набор точек. Обработка изображения часто сводится к выполнению одной и той же операции во всех точках. В этом случае легко выполняется распараллеливание данных. Из-за этого графические процессоры уже являются многоядерными, что обеспечивает параллелизм процессов и эффективную обработку изображений. Суперкомпьютеры включают в себя компьютеры, которые в настоящее время имеют самую высокую производительность. Они состоят из сотен тысяч процессоров. Эффективное использование суперкомпьютеров предполагает наиболее распространенный параллелизм вычислений.Научные исследования и новые технологии имеют задачи, требующие всей мощности существующих вычислительных систем. Научный потенциал страны во многом определяется наличием собственных суперкомпьютеров. Понятие суперкомпьютер является относительным представлением. Характеристики суперкомпьютера десятилетней давности аналогичны характеристикам обычного компьютера. Современные суперкомпьютеры работают на петафлопс (1015 операций по периметру) в измерениях. К 2020 году производительность суперкомпьютеров увеличится в 1000 раз и будет измеряться эксафлопсами. Их можно классифицировать по-разному. Рассмотрим одну из первых и простейших классификаций — классификацию Флинна, которая основана на том, как данные работают на компьютере.
По этой классификации все ЭВМ (вычислительные комплексы) делятся на четыре класса - архитектурные ЭВМ: SISD (Single Instruction stream - единый поток данных) - single data stream - единый поток данных. К этому классу относятся простые «последовательные» компьютеры с фон-неймановской архитектурой при последовательной обработке программных команд, обработке очередного элемента данных SIMD (single router stream — несколько потоков данных) — single command map — множественные потоки данных. К этому типу относятся компьютеры с векторными и матричными процессорами: MISD (множественные потоки маршрутизатора — один поток данных) — множественные потоки команд — один поток данных. Таким типом передачи данных могут быть компьютеры с конвейерным типом. Однако многие считают, что будет упоминаться первый тип таких компьютеров и что компьютеры класса MISD еще не созданы. Мультиинструкционный поток (multi-instruction stream) — мультиинструкционный поток — мультиинструкционный поток. Класс MIMD очень широк и сегодня включает в себя множество компьютеров самых разных архитектур. Поэтому предлагаются другие классификации, позволяющие более точно классифицировать компьютеры, относящиеся к классу MIMD. Мы рассмотрим подробную классификацию компьютеров, относящихся к классу MIMD. Мы сосредоточимся только на другом способе деления компьютеров на три класса: Многопроцессорные вычислительные системы — это многопроцессорные компьютеры, работающие в общей памяти. К этому классу относится большинство многоядерных компьютеров, продаваемых сегодня на рынке. Многокомпьютерные вычислительные системы представляют собой большинство компьютеров, соединенных высокоскоростными линиями связи. Каждый компьютер имеет собственную память и обменивается сообщениями с другими компьютерами в системе для передачи данных. К этому классу относятся кластеры. Кластеризация представляет собой целый вычислительный комплекс с несколькими персональными компьютерами, играющими роль сервера. Компьютеры в кластере могут быть обычными компьютерами, кластеры относительно недороги. Большинство из 500 лучших суперкомпьютеров представляют собой кластеры, а гибридные вычислительные комплексы состоят из множества узлов, каждый из которых может быть многоядерным, многопроцессорным, графическим или векторным процессором. Такие комплексы обычно представляют собой суперкомпьютеры. Чтобы знать архитектуру компьютера, легко рассчитать его максимальную производительность. Поскольку нас в первую очередь интересует скорость операций над действительными числами, нам необходимо загрузить как можно больше функциональных устройств для вещественной арифметики. Операция на обратной стороне высоты используется редко, а в процессе деления требуется дополнительная работа по умножению. Поэтому мы используем только умножение и аппаратное обеспечение для определения максимальной производительности компьютера. Для максимальной производительности их следует использовать в комбинированном режиме. Нечто подобное мы сделали, когда дело дошло до выполнения операции форм D- = B, + Cr-x d. Если дополнительно подсчитать, что каждое такое устройство использует два внутренних конвейера для выполнения векторной работы, то система из двух устройств дает результат четыре операции в час. Время оборота компьютера составляет 4,1 н, поэтому максимальная производительность одного процессора Cray C90 составляет почти 1 гигафлопс или 109 операций в секунду. Если все 16 процессоров компьютера работают одновременно, то максимальная производительность возрастает до 16 гфлопс. Мы разобрали основные особенности архитектуры этого компьютера, из чего и стало понятно, почему он так быстро изобрели. Однако, чтобы знать, как писать для него эффективные программы, нужно изучить его другую сторону. Важно отметить факторы, снижающие производительность в реальных приложениях. Без этого шага будет сложно понять, что нужно изменить в программе для повышения производительности. Оставшаяся часть параграфа посвящена анализу эффективности выполнения программы на этом компьютере. Во-первых, нам нужно определиться с терминологией. Компьютер имеет векторно-конвейерную архитектуру. Используя режим векторной обработки, можно получить основной выигрыш во времени. Если для ее выполнения используются векторные команды в системе команд компьютера, то некоторые части программы могут обрабатываться в векторном режиме. Если заменить всю часть программы векторными командами, то речь идет о ее полной векторизации.
В противном случае работаем с невозможностью частичной векторизации или векторизации части вообще. Процесс поиска соответствующих частей программы и замены их векторными командами называется векторизацией программы. Теоретически при увеличении глубины отжима производительность приближается к определенному значению на пределе. На практике, однако, максимальный эффект достигается на первых шагах, в результате чего производительность почти не меняется или снижается. Основная причина расхождений между этой теорией и практикой заключается в том, что компьютеры Cray C90 имеют очень ограниченный векторный регистр: 8 регистров по 128 слов в каждом. Как правило, увеличение глубины спина приводит к увеличению количества входных векторов. Так было и у нас. Фрагменту исходной формы требовалось три входных вектора при каждом нажатии внешнего круга. Распространение глубины 2 потребовало установки четырех векторов, требуется поднять на глубину 3 5 векторов и так далее. Каждый дополнительный вектор становится более узким пространством, увеличивая глубину предыдущего стимула. На примере вычислительной системы Hewlett-Packard Superdome изучаем архитектуру компьютеров этого класса. Компьютер появился в 2000 году, а в выпусках Tor500 за ноябрь 2001 года они занимали 147 функций. Компьютер HP Superdome может объединять от 2 до 64 процессоров в стандартный набор с последующим расширением системы. Все процессоры имеют общую память, организованную в соответствии с архитектурой ccNUMA. Это означает, в первую очередь, что все процессы работают в едином адресном поле, обращаясь к любому байту памяти посредством обычных операций чтения/записи. Во-вторых, доступ к локальной памяти в системе будет немного быстрее, чем доступ к удаленной памяти. В-третьих, проблемы несовместимости данных, которые могут возникать из-за кэш-памяти процессоров, решаются на аппаратном уровне.
Один из первых проектов под названием параллельные системы — Беовульф-кластеры — появился в Центре космических полетов имени Годдарда НАСА (GSFC). Проект Beowulf стартовал летом 1994 года и вскоре собрал 16 процессоров на процессорах Intel-486DX4/100 МГц. На каждом узле было установлено 16 МБ ОЗУ и 3 сетевые карты для обычной сети Ethernet. Для реализации такой конфигурации разработаны специальные драйвера, распределяющие трафик между существующими сетевыми картами. Позднее на GSFC был собран кластер TheIVIVE — высокопараллельная смонтированная виртуальная среда, структура которой показана на рис. 3.17. Этот кластер состоит из небольших комбинаций E2, B, G и DL, объединяющих 332 процессора и два хост-компьютера. Все узлы в этом кластере работают под управлением операционной системы Red Hat Linux. В 1998 году в Лос-Аламосской национальной лаборатории был создан Linux-кластер Avalon на базе процессоров Alpha 21164A, работающих на частоте 533 МГц. Изначально Avalon состоял из 68 процессоров, а их количество увеличилось до 140. На каждом узле установлено 256 МБ ОЗУ, жесткий диск на 3 ГБ и сетевой адаптер Fast Ethernet. Общая стоимость проекта Avalon составила 313 000 долларов. Показанная кластером производительность теста LINPACK составляет 47,7 глифлопс, занимая 114-е место в 12-м издании списка Tor500, рядом со 152-м процессором системы IBM RS/6000 SP. Кроме того, в 1998 году на самой престижной конференции по высокопроизводительным компьютерам Supercomputing'98 создатели Avalon представили доклад под названием «Avalon: кластер High-alpha/Linux выиграл $10 gfpl за $150k» и представили «Лучшее соотношение цены и качества». ". занял первое место в номинации. («Премия Гордона Белла Прайс / Производительность 1998 года»). В апреле 2000 года был создан кластер Velocity+ для проведения биомедицинских исследований в рамках проекта PEA Корнельского университета. Он состоит из 64 узлов, каждый из которых оснащен четырьмя процессорами Intel Pentium III. Ключи работают под управлением Windows 2000 и подключены к сети с помощью LAN. Проект LoBoS (Boxes on Shelfes) был реализован в апреле 1997 года в Национальном институте здравоохранения США. Интересно использовать Gigabit Ethernet как средство связи. Изначально он состоял из двух процессоров Intel Pentium Pro/200 МГц, 128 МБ оперативной памяти и 47 узлов с 1,2 ГБ дискового пространства на каждом узле. В 1998 году был реализован следующий этап проекта LoBoS2, в ходе которого узлы были преобразованы в настольные компьютеры с сохранением кластерной интеграции. Теперь LoBoS2 состоит из 100 процессорных узлов, каждый из которых оснащен процессором Pentium II / 450 МГц, 256 МБ ОЗУ и 9 ГБ дисковой памяти. Управление компьютерами с общей емкостью RAID 4.2 в дополнение к подключенному кластеру. В 2000 году интересным событием стал кластер KLAT2 (Kentucky Linux Athlon Testbed 2). Система KLAT2 состоит из процессора AMD Athlon/700 МГц и 64 бездисковых коммутаторов с 128 МБ ОЗУ каждый. Программное обеспечение, компиляторы и математические библиотеки (SCALAPACK, BLACS и ATLAS) были обновлены, чтобы максимально использовать возможности 3D-Now! процессоры АМД. Эта работа позволила значительно повысить производительность всей системы. Большой интерес представляет используемое сетевое решение под названием Flat Neighborhood Network (FNN). Каждый узел имеет четыре сетевых адаптера Fast Ethernet, и узлы соединены с помощью девяти 32-портовых коммутаторов. Также для любых двух узлов всегда устанавливается прямое соединение через один из коммутаторов, но нет необходимости соединять все узлы одним коммутатором. В результате оптимизации ПО под архитектуру AMD и топологию FNN удалось добиться рекордного показателя цена/производительность в тесте LINPACK — до 650 долларов за 1 Гфлопс.
Вывод
Термин «параллельный» всегда был синонимом таких терминов, как все большие компьютеры и сложные задачи: параллельные компьютеры, системы параллельных вычислений, языки параллельного программирования и так далее.
Этот термин получил широкое распространение, когда первые компьютеры не смогли своевременно решить данную проблему. Если один компьютер не может выполнить данную задачу, то идея состоит в том, чтобы побудить большее количество компьютеров выполнять одну задачу за раз. Идея была очень полезной, но первые компьютеры были слишком большими, неудобными и технически несовместимыми. Позже, с развитием технологий, эти возможности стали реализовываться.
Использованная литература
1. М.М. Мусаев. «Компьютерные системы и сети» Ташкент 2013г.
2. А.С. Антонов "Параллельное программирование с использованием технологии OpenMP". Москва 2009.
3. В.В. Воеводин «Параллельные вычисления». Москва 2002.
4. Столингс У. «Архитектура компьютерных систем». Москва 2002.
5. Дэвид А. Паттерсон Джон Л. Хеннесси «КОМПЬЮТЕРНАЯ ОРГАНИЗАЦИЯ И ДИЗАЙН» 2012.
6. М. Сато «OpenMP. Параллельное программирование для многоядерных процессоров». Цкубинский университет 2012.
Интернет-ресурсы:
7. https://ru.scribd.com
8. www.tenouk.com
9. https://en.wikipedia.org
http://fayllar.org
|