Для каких классов задач нужны сверхпроизводительные вычислительные системы?

6 ответов на вопрос “Для каких классов задач нужны сверхпроизводительные вычислительные системы?”

  1. Shin-San Ответить

    Серийное производство электронных вычислительных машин (ЭВМ) начинается в разных странах в 1950-х годах. Историю развития ЭВМ принято делить на поколения. Переход от одного поколения к другому связан со сменой элементной базы, на которой создавались машины, с изменением архитектуры ЭВМ, с развитием основных технических характеристик (скорости вычислений, объема памяти и др.), с изменением областей применения и способов эксплуатации машин.
    Под архитектурой ЭВМ понимаются наиболее общие принципы построения компьютера, реализующие программное управление его работой и взаимодействие основных функциональных узлов.
    В основе архитектуры ЭВМ разных поколений лежат принципы Джона фон Неймана. Однако в процессе развития происходят некоторые отклонения от фон-неймановской архитектуры.

    Однопроцессорная архитектура ЭВМ

    Элементной базой ЭВМ первого поколения (1950-годы) были электронные лампы, а ЭВМ второго поколения (1960-е годы) создавались на базе полупроводниковых элементов. Однако их архитектура была схожей. Она в наибольшей степени соответствовала принципам фон Неймана. В этих машинах один процессор управлял работой всех устройств: внутренней и внешней памяти, устройств ввода и вывода, как показано на рис. 2.4.

    Согласно принципам фон Неймана, исполняемая программа хранится во внутренней памяти — в оперативном запоминающем устройстве (ОЗУ). Там же находятся данные, с которыми работает программа. Каждая команда программы и каждая величина (элемент данных) занимают определенные ячейки памяти, как показано на рис. 2.5.

    Процессор начинает выполнение программы с первой команды и заканчивает на команде остановки, назовем ее STOP. При выполнении очередной команды процессор извлекает из памяти обрабатываемые величины и заносит их в специальные ячейки внутренней памяти процессора — регистры. Затем выполняется команда, например складываются два числа, после чего полученный результат записывается в определенную ячейку памяти. Процессор переходит к выполнению следующей команды. Исполнение программы закончится, когда процессор обратится к команде STOP.
    Среди команд программы существуют команды обработки данных и команды обращения к внешним устройствам. Команды обработки данных выполняет сам процессор с помощью входящего в него арифметико-логического устройства — АЛУ, и этот процесс происходит сравнительно быстро. А команды управления внешними устройствами выполняются самими этими устройствами: устройствами ввода/вывода, внешней памятью. Время выполнения этих команд во много раз больше, чем время выполнения команд обработки данных. При однопроцессорной архитектуре ЭВМ, показанной на рис. 2.4, процессор, отдав команду внешнему устройству, ожидает завершения ее выполнения. При большом числе обращений к внешним устройствам может оказаться, что большую часть времени выполнения программы процессор «простаивает» и, следовательно, его КПД оказывается низким. Быстродействие ЭВМ с такой архитектурой находилось в пределах 10-20 тысяч операций в секунду (оп./с).

    Использование периферийных процессоров

    Следующим шагом в развитии архитектуры ЭВМ стал отказ от однопроцессорного устройства. Уже на последних моделях машин второго поколения, помимо центрального процессора (ЦП), выполнявшего обработку данных, присутствовали периферийные процессоры, которые назывались каналами ввода/вывода (рис. 2.6). Их задача состояла в автономном управлении устройствами ввода/вывода и внешней памяти, что освобождало от этой работы центральный процессор. В результате КПД центрального процессора существенно возрос. Быстродействие некоторых моделей машин с такой архитектурой составляло от 1 до 3 млн оп./с.

    На всех моделях ЭВМ третьего поколения, которые создавались на базе интегральных схем (1970-80-е годы), использовалась архитектура с одним центральным процессором и периферийными процессорами внешних устройств. Такая многопроцессорная архитектура позволяла реализовать мультипрограммный режим работы: пока одна программа занята вводом/выводом данных, которым управляет периферийный процессор, другая программа занимает центральный процессор, выполняя вычисления. Благодаря совершенствованию элементной базы и других аппаратных средств на некоторых моделях ЭВМ третьего поколения достигалось быстродействие до 10 млн оп./с.
    Для разделения ресурсов ЭВМ между несколькими выполняемыми программами потребовалось создание специального программного обеспечения: операционной системы (ОС). К разделяемым ресурсам, прежде всего, относятся время работы центрального процессора и оперативная память. Задача ОС состоит в том, чтобы разные программы, выполняемые одновременно на ЭВМ, «не мешали» друг другу и чтобы КПД центрального процессора был максимальным, иначе говоря, чтобы ЦП не «простаивал». ОС берет на себя также заботу об очередности использования несколькими программами общих внешних устройств: внешней памяти, устройств ввода/вывода.

    Архитектура персонального компьютера

    Персональный компьютер (ПК) — самый распространенный в наше время тип компьютера. Появление ПК связано с созданием микропроцессоров, которое началось в 1970-х годах. До недавнего времени в устройстве ПК существовал один центральный процессор и множество периферийных процессоров, управляющих внешними устройствами, которые называются контроллерами. Архитектура такого ПК изображена на рис. 2.7.

    Для связи между отдельными функциональными узлами ПК используется общая информационная магистраль, которая называется системной шиной.
    Системная шина состоит из трех частей:
    • шина данных (для передачи данных);
    • шина адреса (для передачи адресов устройств, которым передаются данные);
    • шина управления (для передачи управляющих сигналов, синхронизирующих работу разных устройств).
    Важное достоинство такой архитектуры возможность подключения к компьютеру новых устройств или замена старых устройств на более современные. Это называется принципом открытой архитектуры. Для каждого типа и модели устройства используется свой контроллер, а в составе операционной системы имеется управляющая программа, которая называется драйвером устройства.
    Открытая архитектура персонального компьютера — это архитектура, предусматривающая модульное построение компьютера с возможностью добавления и замены отдельных устройств».
    Важное событие в совершенствовании архитектуры ПК произошло в 2005 году: был создан первый двухъядерный микропроцессор. Каждое ядро способно выполнять функции центрального процессора. Эта особенность архитектуры позволяет производить на ПК параллельную обработку данных, что существенно увеличивает его производительность. Выпускаемые в настоящее время микропроцессоры содержат до 8 ядер.

    Архитектура ненеймановских вычислительных систем

    Несмотря на стремительно нарастающую производительность ЭВМ, которая каждые 4 5 лет по важнейшим показателям практически удваивается, всегда есть классы задач, для которых никакой производительности не хватает. Укажем некоторые из них.
    1. Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы, которые можно реализовать очень быстро (как иногда говорят, в реальном масштабе времени), необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.
    2. Поиск информации в гигантских базах данных, в информационном пространстве Интернета.
    3. Моделирование интеллекта — при всех фантастических показателях, объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.
    Быстродействие компьютера с одним центральным процессором имеет физическое ограничение: повышение тактовой частоты процессора ведет к повышению тепловыделения, которое не может быть неограниченным. Перспективный путь повышения производительности компьютера лежит на пути отказа от единственности главных устройств компьютера: либо процессора, либо оперативной памяти, либо шины, либо всего этого вместе. Это путь еще большего отступления от архитектуры фон Неймана.
    Чтобы стало понятнее, зачем компьютеру несколько процессоров, обсудим алгоритм решения простейшей математической задачи. Есть массив из 100 чисел: a1, а2, … , а100. Требуется найти их сумму.
    Нет ничего проще! И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, как-то обозначим их сумму (например, S), затем прибавим к ней третье, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 2.8.

    Поскольку у человека нет второй головы, иначе эту задачу в одиночку не решить. Но представим, что мы решаем ее не в одиночку, а всем классом (25 человек). Тогда возникает возможность совсем иной последовательности действий.
    1. Объединим числа в пары — по два на каждого (итого распределили 50 чисел); например, ученик № 1 берет себе а1 и а2, ученик № 2 — а3 и а4, и т. д.
    2. Даем команду «складывай!» — и каждый складывает свои числа.
    3. Даем команду «записывай!» — и каждый записывает мелом на классной доске свой результат.
    4. Поскольку у нас осталось еще 50 необработанных чисел (а51, …, а100), повторяем пункты 1 – 3. После этого имеем на доске 50 чисел b1 = а1 + а2, …, b50 = а99 + а100 — результаты парных сложений.
    5. Объединим в пары числа bi и повторим выполнение пунктов 2 – 4.
    Продолжаем этот процесс (2 – 5) до тех пор, пока не останется одно число — искомая сумма.
    Первое впечатление, что очень сложно, гораздо сложнее, чем алгоритм на рис. 2.8. Если бы мы захотели записать этот алгоритм в виде блок-схемы, то нам бы пришлось кроме описания порядка и объектов действий сделать то, что мы никогда при записи алгоритмов не делали, — предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и 3 должно завершиться всеми участниками вычислений до того, как они будут продолжены (до перехода к п. 4), иначе даже при решении этой простой задачи наступит хаос.
    Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в 25 раз!
    Следующий вопрос: что надо изменить в устройстве компьютера, чтобы он смог так работать? Для реализации подобной схемы вычислений компьютеру потребуется 25 процессоров, объединенных в одну архитектуру и способных работать параллельно.
    Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.
    Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 2.7 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды 3 произойдет одновременное обращение 25 процессоров к системной шине для пересылки результатов сложения в оперативную память. Но поскольку шина одна, числа по ней могут пересылаться только по одному! Значит, для выполнения команды 3 придется организовать очередь на передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю эта очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они велики? Окупятся ли расходы на 24 дополнительных процессора?

    В возникшей ситуации естественен следующий шаг «изобретательской мысли»: ввод в архитектуру нескольких системных шин. А если еще подумать над возможными проблемами, то и нескольких устройств оперативной памяти.
    Как видите, все это очень непросто! Обсуждаемые изменения в устройстве компьютера приводят к «ненеймановским» архитектурам. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.

    Варианты реализации ненеймановских вычислительных систем

    В самом общем смысле под параллельными вычислениями понимаются процессы обработки данных, в которых одновременно могут выполняться нескольких машинных операций. Параллельные вычисления реализуются как за счет новой архитектуры вычислительной техники, так и за счет новых технологий программирования. Такие технологии называются параллельным программированием.
    Распределенные вычисления — способ реализации параллельных вычислений путем использования множества компьютеров, объединенных в сеть. Такие вычислительные системы еще называют мультикомпьютерными.
    Распределенные вычисления часто реализуются с помощью компьютерных кластеров — нескольких компьютеров, связанных в локальную сеть и объединенных специальным программным обеспечением, реализующим параллельный вычислительный процесс. Распределенные вычисления могут производиться и с помощью многомашинных вычислительных комплексов, образуемых объединением нескольких отдельных компьютеров через глобальные сети.
    Мультипроцессорные системы образуют единый компьютер, который относится к классу суперкомпьютеров. Достижение параллелизма в них происходит благодаря возможности независимой работы отдельных устройств и их дублирования: несколько процессоров, блоков оперативной памяти, шин и т. д. Мультипроцессорная система может использовать разные способы доступа к общей для всей системы памяти. Если все процессоры имеют равный (однородный) доступ к единой памяти, то соответствующая вычислительная система называется векторным суперкомпьютером.
    Один из самых мощных в мире суперкомпьютеров под названием «Ломоносов» (рис. 2.9) произведен в России и работает в Московском государственном университете. Его быстродействие составляет более ста триллионов операций в секунду.

    Вопросы и задания

    1. Расскажите о смене элементной базы компьютеров, происходившей при переходе от одного поколения к другому. Как при этом менялись основные характеристики ЭВМ?
    2. В чем состоял отход от архитектуры фон Неймана на ЭВМ второго и третьего поколений?
    3. Что позволило реализовать мультипрограммный режим работы на ЭВМ третьего поколения?
    4. Чем принципиально отличается архитектура ПК от классической архитектуры компьютеров первых поколений?
    5. Какие функции выполняют контроллеры внешних устройств на ПК?
    6. В чем состоит принцип открытости архитектуры ПК?
    7. Какие функции выполняли первые операционные системы?
    8. Для каких классов задач нужны сверхпроизводительные вычислительные системы?
    9. Что такое параллельные вычисления?
    10. Для примера со сложением чисел 25 учениками попробуйте проанализировать следующие ситуации: в классе всего 1 кусочек мела; в классе 5 кусочков мела; в классе 25 кусочков мела. Оцените, как от этого зависит время решения задачи (учтите еще ширину доски и время перемещения учеников по классу). Попробуйте построить модель такого процесса. Переведите эту ситуацию на язык компьютерной терминологии для многопроцессорных систем.
    11. Чем отличаются мультикомпьютерные системы от мультипроцессорных? По какому принципу работают суперкомпьютеры?

  2. MajongDa Ответить

    Что нужно чтобы вскопать огород? При наличии огорода, нужны рабочие инструменты и рабочая сила (работники). А что делать если нужно вскопать быстрей или больше? Можно позвать друзей или нанять других людей, то есть увеличить число работников. Вот это и является примером высокопроизводительного вскапывания огорода. Не всегда можно увеличивать производительность вскапывания огорода путём поиска сильных работников, так как производительность каждого отдельно взятого работника ограничена. Потому и приходится прибегать к услугам большего числа работников.
    Аналогично и с высокопроизводительными вычислениями. Работниками (анг. workers) так и называются отдельные компьютеры и процессорные ядра в вычислительных кластерах, если опираться на терминологию пакета МАТЛАБ (англ. MATLAB). В документации других кластеров эти ядра и компьютеры называются нодами (англ. nodes), так и буду их называть в этой заметке.

    Просто о сложном: высокопроизводительные вычисления для инженерных и научно-исследовательских задач

    Введение
    На Хабрахабре уже много писалось о высокопроизводительных, распределённых и параллельных вычислениях (ВВ). freetonik уже сделал подробное и наглядное введение в параллельные вычисления и продолжение тут, ВВ были рассмотрены автором keleg в тут, теория распределённых вычислений была раскрыта в заметке автора mkosyakov, Melges описал опыт организации параллельных вычислений по сети на Си и XakepRU описал как можно распараллелить процессы в Linux. Перечитав их я понял что нет заметки которая могла бы помочь начать использовать ВВ для решения инженерных и научных задач. Это скорее всего общая особенность многих источников информации по данной тематике. Программисты пишут хорошие программы которые выполняют возложенные на них задачи. Университетские преподаватели доступно объясняют как и почему стоит использовать высокопроизводительные вычисления. Но как только исследователи осознают что им пора воспользоваться ВВ, то они сталкиваются с малым числом ‘мостиков’ которые связывают понимание ВВ с непосредственным использованием ВВ систем в их работе. В университетах студенты могут найти такой ‘мостик’ на лабораторных и практических работах. А я попробую восполнить этот пробел в надежде что материал будет полезным для тех кто этого не изучал и поможет им начать пользоваться ВВ. Сначала будет краткое введение в ВВ, после чего будут рассмотрены возможности использования МАТЛАБ, HPCondor суперкомпьютеров.
    Высокопроизводительные вычисления (ВВ) приходят на помощь в тех случаях когда нужно сократить время расчётов или получить доступ к большему объёму памяти. Например, ваша программа может проводить необходимые вычисления в течение недели, но вам нужно получить результаты завтра. Если разделить эту программу на части и выполнять каждую из них на отдельном ноде, то теоретически можно ускорить расчёты пропорционально числу вовлечённых нодов. Но это только теоретически, а на практике этому всегда что-то мешает (о чём подробно писалось тут). Тут стоит упомянуть и другой случай, когда ваша программа требует большой объём оперативной памяти. Например, в вашем компьютере установленно только 4 Гб оперативной памяти, но для расчётов нужно хотя бы 64 Гб. В системах ВВ на каждом ноде установленна память определённой ёмкости. Так если каждому ноду доступно 2 Гб памяти, то опять же можно разделить программу на 32 части, каждая из которых будет выполняться на отдельном ноде, будет взаимодействовать с другими частями, обмениваться данными и, в конечном итоге, программа в целом будет иметь доступ к 64 Гб памяти.
    Из этих примеров вы наверняка поняли что высокопроизводительные вычисления – это вычисления проводимые на компьютерных системах со спецификациями, которые значительно превышают обычные компьютеры. Это понятие условное, возможно есть и более точное определение, но я его сейчас не смог найти. Существуют параллельные, распределённые ВВ, а так же их комбинации.
    Параллельные вычисления предусматривают разработку программ, которые во время их выполнения представляют собой несколько параллельных и взаимодействующих между собой процессов. Например, моделирование характеристик ячейки солнечной батареи предусматривает взаимодействие трёх моделей описывающих: перенос носителей заряда, распространение падающего света внутри ячейки, температурные эффекты, растяжение-сжатие. Так перенос носителей, растяжение-сжатие и показатель преломления материала, который используется в оптической модели падающего света, зависят от температуры и модели, описывающие эти эффекты, должны взаимодействовать друг с другом в процессе расчёта. Чтобы ускорить расчёты можно код модели описывающей транспорт носителей выполнять на одном ноде, код отвечающий за распространение света – на другом, температурную модель – на третьем, и так далее. То есть, ноды будут выполнять взаимодействующие расчёты параллельно.
    Распределённые вычисления предусматривают использование нескольких не взаимодействующих друг с другом нодов и процессов. Очень часто в таком случае выполняется один и тот же код на разных нодах. Например, нам нужно оценить растяжение и сжатие той же ячейки солнечной батареи в зависимости от температуры. В таком случае, температура – входной параметр модели и один и тот же программный код этой модели можно выполнить на разных нодах для разных значений температуры.
    Выбор между распределёнными и параллельными расчётами зависит от организации программного кода используемого для расчётов, самой физической модели, доступности систем ВВ для конечного пользователя. Далее в этой заметке о том
    как конечный пользователь взаимодействует с системой ВВ;
    какие ВВ системы доступны и какие у них ограничения;
    о кластерах построенных при помощи ПО Кондор (англ. Condor) и МАТЛАБ (выбор пал на них просто по причине опыта автора с ними);
    немного о суперкомпьютерах и гридах;
    и о том как всем этим хозяйством можно можно воспользоваться.
    Взаимодействие пользователя с системой высокопроизводительных вычислений
    Если пользователь использует ВВ системы удалённо, то ему нужен компьютер, на котором он будет:
    подготавливать программы для запуска на системах ВВ;
    запускать расчёты на системах ВВ либо подключаться к системам ВВ для запуска программ;
    на котором он будет обрабатывать результаты расчётов.
    Тут многое зависит от личного предпочтения пользователя, доступности нужного программного обеспечения и других требований. Есть возможность выбора языка программирования, операционной системы рабочего компьютера и кластера, используемых программных библиотек и ПО для организации кластеров. Лично я всё время пытаюсь писать программы на С или С++ с использованием MPI и openMP для Линукс (тут и тут уже есть хорошие статьи по этой теме этих пап и мам высокопроизводительных вычислений ), но по разным причинам это не всегда получается. Типичная ситуация – приходит шеф в пятницу и говорит что нам срочно нужны результаты. Заканчивается это тем что пишется программа в МАТЛАБ для проведения нужных расчётов. А чтобы быстрей получить результаты, эта программа работает на кластере МАТЛАБ нашей организации до понедельника.
    Что касается операционной системы рабочего компьютера пользователя, то в большинстве случаев удобней всего использовать ту же операционную систему и её дистрибутив что установленна на системе ВВ. В данный момент большинство ВВ систем работает под управлением различных дистрибутивов Линукс. Если на нашем кластере стоит Scientific Linux, то и на рабочий компьютер проще поставить эту же систему чтобы в дальнейшем не путаться в командах. Если планируете использовать кластер на базе МАТЛАБ, то выбор операционной системы роли не играет, так как программы написанные на МАТЛАБ могут выполняться на компьютерах с любыми ОС (доступными для установки МАТЛАБ, естественно).
    Если же вы выбираете смешанную схему, при которой у вас на компьютере установлена ОС семейства MS Windows, а ВВ система построена на ОС Линукс, то вам понадобится клиент для подключения к удалённой системе (например, PuTTY), и, возможно X-сервер или же сразу Cygwin, в котором это всё есть. В выборе программного обеспечения вам всегда помогут локальные администраторы ВВ системы.
    Важный момент: ВВ системы обычно либо не поддерживают программы требующие работы в интерактивном режиме (которые в процессе выполнения запрашивают ввод данных, ожидают других действий пользователя таких как нажатие клавиш или манипуляций мышкой) или поддерживают их ограниченно. Аналогично и в отношении графического интерфейса – его использование чаще всего не предусмотренно и ВВ системы используются в текстовом режиме из командной строки (исключение — тот же МАТЛАБ). Перед использованием вашей программы в ВВ системе, она должна быть отлажена и потом преобразована так чтобы она могла быть запущенна на ВВ системе и без дальнейшего вмешательства человека она провела расчёты и сохранила результаты в файлах либо передала их пользователю другим способом.
    К производительности компьютера пользователя требования минимальны, так как основные расчёты всё равно планируется проводить на системах ВВ. Следить за состоянием расчётов, запускать и прерывать их можно с компьютера минимальной конфигурации и с мобильного телефона.
    Некоторые системы ВВ
    Общий обзор
    Чаще всего для проведения ВВ используются суперкомпьютеры, компьютерные кластеры и гриды (англ. computing grids).
    Суперкомпьютеры – компьютерные системы, значительно превышающие большинство существующих компьютеров по своим параметрам таким как производительность, доступная оперативная память, доступное число процессоров. Для большей информации о них вы можете посмотреть список пятиста самых производительных суперкомпьютеров мира.
    Компьютерный кластер – группа компьютеров, которые могут взаимодействовать друг с другом для наращивания доступной памяти и числа процессоров вовлечённых в работу. Чаще всего такие кластеры строятся внутри исследовательских групп или организаций.
    Гриды – это группы кластеров и суперкомпьютеров, разбросанных по разным городам и странам. Так, например, вы можете передать свою вычислительную задачу на сервер в Швейцарии, но она будет выполняться либо на кластерах в Германии, Франции или Польше. Наиболее известный пример грида – европейская грид-система EGEE, объединяющая в себе около сорока тысяч процессоров и несколько петабайтов дискового пространства.
    Конечному пользователю часто сложно или не возможно различить суперкомпьютеры и кластеры. Вот три примера:
    1. Не редко суперкомпьютерами называют и группу компьютеров подключённых друг к другу через высокоскоростные сети связи, что по сути — тот же самый компьютерный кластер;
    2. В то же время существуют кластеры построенные на базе программного обеспечения HPCondor, это так же группа компьютеров взаимодействующих с сервером в локальной сети (часто – медленной сети) и не кто не рискнёт назвать такие кластеры суперкомпьютерами;
    3. Есть же суперкомпьютеры NVIDIA (которые имеют системный блок большего размера чем обычные офисные компьютеры) у которых вся вычислительная система не разбросана по сети, а умещается в этом системном блоке.
    Если взять примеры 2 и 3, то разница между суперкомпьютером и кластером очевидна. В первом и третьем, особой грани не видно, опять же обе системы из этих двух примеров называют суперкомпьютерами.
    Кластеры HPCondor (англ. Condor, после 2012 года — HTCondor)
    Программное обеспечение для организации такого кластера можно загрузить бесплатно со страницы проекта. Кластеры данного типа состоят из рабочих компьютеров и сервера. К комментариях dunordavind сделал важное уточнение: такие системы ВВ — не кластеры в классическом смысле, а скорее менеджеры ресурсов (но чтобы не переписывать весь текст я далее всё равно буду называть их кластерами). Преимущество такого кластера в том что рабочими компьютерами могут выступать обыкновенные офисные и лабораторные компьютеры на которых установленно клиентское ПО. В дневное время эти компьютеры могут использоваться для основной работы, но как только ими перестают пользоваться (это зависит от настроек) сервер начинает запускать на этих компьютерах задачи которые были переданы ему ранее. Обязательным условием использования этого кластера является установка клиентского ПО и на тот компьютер, с которого пользователи передают задачи. То есть и их компьютер должен быть частью кластера. Поддерживаемые операционные системы: MS Windows, MacOS и Linux.
    Для выполнения программы, эта программа должна быть скомпилирована в исполняемый код для нужной ОС и вместе с необходимыми библиотеками передана на сервер. Это применимо и к программам написанным для МАТЛАБ – вам так же необходимо откомпилировать их используя компилятор C, который поставляется с МАТЛАБ. Для запуска этой программы в кластере, необходимо написать простой конфигурационный скрипт, в котором записаны требования к среде выполнения вашей программы (размер оперативной памяти, операционная система и так далее) и список передаваемых вместе с этой программой файлов. В качестве примера ниже приведён текст из одного из таких файлов (назовём его cost_top.txt):
    universe = vanilla
    executable = cost_top.bat
    transfer_input_files = cost_top.exe
    output = dump.txt
    error = errdump.txt
    log = foo.log
    requirements = (OpSys == “WINNT51″)
    rank = kflops
    transfer_files = ALWAYS
    queue
    Уверен что Вы уже догадались — этот файл “объясняет” ПО Кондор такие важные моменты как имя исполняемой программы, какие файлы необходимо передать в кластер, в какой файл записывать результаты выполнения программы, в какой – сообщения об ошибках, в какой – дополнительные сообщения, какие именно требования выдвигаются к ОС нода и её производительности и передавать ли файлы.
    Содержимое файла cost_top.bat, который выполняется на ноде:
    path=c:\windows\system32;c:\windows;c:\windows\system;p:\matlab6\bin\win32
    cost_top.exe
    Скорее всего вы поймёте, что первая строка в этом скрипте отвечает за добавление нужных путей в переменную окружения, вторая – за запуск нужной нам программы.
    Для передачи вашей задачи на сервер кластера, необходимо будет в командной строке набрать ‘condor_submit cost_top.txt’. После этого ваша задача будет поставлена в очередь и через некоторое время сервер будет готов запустить вашу задачу на клиентских компьютерах. Время ожидания в очереди зависит приоритета каждого из пользователей и нагрузки на кластер и выбирается системой балансировки задач сервера.
    У кластеров данного типа есть ограничения:
    с момента постановки задачи в очередь и до момента окончания расчёта ваш клиентский компьютер должен быть включён и подкючен к локальной сети так как сервер и клиент обмениваются файлами;
    данный кластер поддерживает только распределённые ВВ задачи;
    есть сложности в использовании какой-либо сторонней программы (отличной от написанной и откопелированной вами) и программ требующих множества библиотек.
    Кластеры МАТЛАБ
    МАТЛАБ сам по себе способен создать кластер. Для этого вам понадобится соответствующие библиотеки и сервер — Distributed Computing Toolbox и Distributed Computing Server. Сейчас современные процессоры компьютеров имеют более чем одно ядро и МАТЛАБ способен развернуть ваш собственный локальный кластер прямо на базе вашего рабочего компьютера. Такая конфигурация кластера известна как локальная конфигурация. Она удобна в тех случаях когда хочется немного ускорить расчёты без особых усилий как и тогда когда требуется протестировать программу перед её стартом на более серьёзной ВВ системе такой как суперкомпьютер или кластер.
    Наряду с локальной конфигурацией существует и другие конфигурации. Например для кластера объединяющего группу компьютеров в локальной сети, группу компьютеров в кластере или в гриде. Если у администраторов есть возможность и они не ленятся, то они обычно настраивают кластеры МАТЛАБ и проводят обучающие курсы для того чтобы пользователям было легко пользоваться такими кластерами.
    Преимущества кластеров МАТЛАБ:
    клиентский компьютер, с которого передаются задачи для расчёта, может быть выключен после передачи задачи и пользователь может забрать результаты расчётов позже;
    могут выполнять как распределённые так и параллельные вычислительные задачи;
    пользователям МАТЛАБ легче начать пользоваться такими кластерами, так как язык программирования уже знаком;
    программы не требуют компиляции;
    адаптация программы для параллельных расчётов в которой уже есть операторы цикла ‘for’ очень проста – достаточно заменить такой оператор на ‘parfor’ и добавить пару строк для инициализации кластера и его закрытия после окончания работы.
    Например, код без использования parfor:
    clear all;
    Na=4:50;
    Nc=4:30;
    for i1=1:length(Na),
    for i2=1:length(Nc),
    [out1,out2]=fom(Na(i1),Na(i1),Nc(i2),0) ;
    end
    end
    save FigOM.dat FigOM -ascii
    save dF.dat dF -ascii
    exit
    А теперь то же самое с использованием parfor и четырёх нодов:
    clear all;
    matlabpool open 4
    Na=4:50;
    Nc=4:30;
    for i1=1:length(Na),
    parfor i2=1:length(Nc),
    [out1,out2]=fom(Na(i1),Na(i1),Nc(i2),0)
    end
    end
    matlabpool close
    save FigOM.dat FigOM -ascii
    save dF.dat dF -ascii
    exit
    Недостатки:
    МАТЛАБ – не бесплатный продукт и части пользователей он просто не по карману;
    кластерное ПО не поставляется с программой для балансировки нагрузки (она может быть установленна отдельно), что приводит к ситуациям когда некоторые пользователи занимают все ноды кластера и блокируют доступ других пользователей.
    Суперкомпьютеры и гриды
    Как уже было выше упомянуто, иногда сложно найти отличие между суперкомпьютером, вычислительным кластером и гридом. С этой стороны окна терминала все они выглядят одинаково. Все они имеют большое число процессоров и памяти в ВВ системе. Среди установленного программного обеспечения у них есть компиляторы и библиотеки MPI и OpenMP. Иногда установлен МАТЛАБ и другие программы поддерживающие использование группы нод и их памяти.
    Наиболее часто встречающийся алгоритм работы такой:
    пользователь подключается (как правило по SSH) к специальным нодам (англ. login nodes) на которых он интерактивно может выполнять часть команд и с которых может контролировать свои расчёты;
    загружает модули, необходимые для выполнения той или иной задачи, например, компилятор gcc и библиотеку MPI;
    если необходимо, то компилирует свою программу с поддержкой нужных библиотек;
    аналогично кластеру HPCondor, готовит файл настроек и команд для выполнения своей программы (англ. job submiossion file);
    передаёт этот файл настроек и команд при помощи команды ‘qsub имя_файла’ в очередь на выполнение;
    как только выполнение программы будет завершено, пользователь может получить результаты её выполнения (и проще их сохранять в файлы).
    Файлы настроек аналогичны файлам кластеров HPCondor. Например для того чтобы запустить вышеприведённый пример с parfor можно воспользоваться следующим файлом:
    #!/bin/sh
    #$ -l h_rt=10:00:00
    /usr/local/bin/matlab /home/el/calmap.m
    Во второй строке указывается максимальное время необходимое для выполнения данной задачи, а в третьей – команда которую необходимо выполнить на данной системе для запуска нужного пользователю программного кода МАТЛАБ.
    Ещё один пример файла для запуска программы которая использует библиотеки MPI:
    #!/bin/bash
    #$ -l h_rt=4:00:00
    #$ -pe mvapich2-ib 12
    #
    LDFLAGS=”-L$HOME/opt/lib -lm” export LDFLAGS
    CPPFLAGS=”-I$HOME/opt/include” export CPPFLAGS
    LD_LIBRARY_PATH=”$HOME/opt/lib:$LD_LIBRARY_PATH” export LD_LIBRARY_PATH
    PATH=$PATH:$HOME/opt/bin export PATH
    module add compilers/intel/12.1.15
    module add mpi/intel/mvapich2/1.8.1
    mpirun -np 12 m-mpi test7.ct
    Во второй строке – максимальное время необходимое для расчёта, в третьей – указание имени среды для параллельных расчётов (задано администраторами) и число запрашиваемых нодов, далее 4 строки с присвоением нужного значения переменным окружения, после чего две строки которые отвечают за подключение нужных модулей и в конце скрипта – запуск нужной программы которая будет использовать 12 нодов.
    Заключение
    Нельзя объять необъятное, но пытаться можно и нужно. В этой заметке я попытался сделать обзор систем высокопроизводительных вычислений, помочь начинающим пользователям разобраться со спектром возможностей и понять что доступно и как это можно использовать. Как вы видите, даже если у вас нет доступа к суперкомпьютерам и гридам, то можно построить свой кластер на основе МАТЛАБ или бесплатного ПО Кондор.
    p.s. Если можете дополнить эту заметку или нашли ошибку, то прошу написать об этом ниже. В конце концов это будет только на пользу знаниям и пониманию вопроса и это даст возможность улучшить заметку.
    p.p.s. Есть ещё возможность использования технологии CUDA для ускорения расчётов в С/C++ и МАТЛАБ путём вовлечения ядер графического процессора в работу, но об этом написано много.

  3. ilin1980 Ответить

    Элементной базой ЭВМ первого поколения (1950-е годы) были электронные лампы, а ЭВМ второго поколения (1960-е годы) создавались на базе полупроводниковых элементов. Однако их архитектура была схожей. Она в наибольшей степени соответствовала принципам фон Неймана. В этих машинах один процессор управлял работой всех устройств: внутренней и внешней памяти, устройств ввода и вывода, как показано на рис. 2.4.

    Рис. 2.4. Структура однопроцессорной ЭВМ. Сплошные стрелки — передача данных, пунктирные стрелки — управляющее воздействие
    Согласно принципам фон Неймана, исполняемая программа хранится во внутренней памяти — в оперативном запоминающем устройстве (ОЗУ). Там же находятся данные, с которыми работает программа. Каждая команда программы и каждая величина (элемент данных) занимают определенные ячейки памяти, как показано на рис. 2.5.

    Рис. 2.5. Размещение в ОЗУ программы и данных
    Процессор начинает выполнение программы с первой команды и заканчивает на команде остановки, назовем ее STOP. При выполнении очередной команды процессор извлекает из памяти обрабатываемые величины и заносит их в специальные ячейки внутренней памяти процессора — регистры. Затем выполняется команда, например складываются два числа, после чего полученный результат записывается в определенную ячейку памяти. Процессор переходит к выполнению следующей команды. Исполнение программы закончится, когда процессор обратится к команде STOP.
    Среди команд программы существуют команды обработки данных и команды обращения к внешним устройствам. Команды обработки данных выполняет сам процессор с помощью входящего в него арифметико-логического устройства — АЛУ, и этот процесс происходит сравнительно быстро. А команды управления внешними устройствами выполняются самими этими устройствами: устройствами ввода/вывода, внешней памятью. Время выполнения этих команд во много раз больше, чем время выполнения команд обработки данных. При однопроцессорной архитектуре ЭВМ, показанной на рис. 2.4, процессор, отдав команду внешнему устройству, ожидает завершения ее выполнения. При большом числе обращений к внешним устройствам может оказаться, что большую часть времени выполнения программы процессор «простаивает» и, следовательно, его КПД оказывается низким. Быстродействие ЭВМ с такой архитектурой находилось в пределах 10-20 тысяч операций в секунду (оп./с).

    Использование периферийных процессоров

    Следующим шагом в развитии архитектуры ЭВМ стал отказ от однопроцессорного устройства. Уже на последних моделях машин второго поколения, помимо центрального процессора (ЦП), выполнявшего обработку данных, присутствовали периферийные процессоры, которые назывались каналами ввода/вывода (рис. 2.6). Их задача состояла в автономном управлении устройствами ввода/вывода и внешней памяти, что освобождало от этой работы центральный процессор. В результате КПД центрального процессора существенно возрос. Быстродействие некоторых моделей машин с такой архитектурой составляло от 1 до 3 млн оп./с.

    Рис. 2.6. Структура ЭВМ с одним центральным процессором и периферийными процессорами управления внешними устройствами (треугольники)
    На всех моделях ЭВМ третьего поколения, которые создавались на базе интегральных схем (1970-80-е годы), использовалась архитектура с одним центральным процессором и периферийными процессорами внешних устройств. Такая многопроцессорная архитектура позволяла реализовать мультипрограммный режим работы: пока одна программа занята вводом/выводом данных, которым управляет периферийный процессор, другая программа занимает центральный процессор, выполняя вычисления. Благодаря совершенствованию элементной базы и других аппаратных средств на некоторых моделях ЭВМ третьего поколения достигалось быстродействие до 10 млн оп./с.
    Для разделения ресурсов ЭВМ между несколькими выполняемыми программами потребовалось создание специального программного обеспечения: операционной системы (ОС). К разделяемым ресурсам, прежде всего, относятся время работы центрального процессора и оперативная память. Задача ОС состоит в том, чтобы разные программы, выполняемые одновременно на ЭВМ, «не мешали» друг другу и чтобы КПД центрального процессора был максимальным, иначе говоря, чтобы ЦП не «простаивал». ОС берет на себя также заботу об очередности использования несколькими программами общих внешних устройств: внешней памяти, устройств ввода/вывода.

    Архитектура персонального компьютера

    Персональный компьютер (ПК) — самый распространенный в наше время тип компьютера. Появление ПК связано с созданием микропроцессоров, которое началось в 1970-х годах. До недавнего времени в устройстве ПК существовал один центральный процессор и множество периферийных процессоров, управляющих внешними устройствами, которые называются контроллерами. Архитектура такого ПК изображена на рис. 2.7.

    Рис. 2.7. Архитектура персонального компьютера (сплошные стрелки — направление потоков информации, пунктирные — направление управляющих сигналов, К — контроллер)
    Для связи между отдельными функциональными узлами ПК используется общая информационная магистраль, которая называется системной шиной.
    Системная шина состоит из трех частей:
    шина данных (для передачи данных);
    шина адреса (для передачи адресов устройств, которым передаются данные);
    шина управления (для передачи управляющих сигналов, синхронизирующих работу разных устройств).
    Важное достоинство такой архитектуры — возможность подключения к компьютеру новых устройств или замена старых устройств на более современные. Это называется принципом открытой архитектуры. Для каждого типа и модели устройства используется свой контроллер, а в составе операционной системы имеется управляющая программа, которая называется драйвером устройства.
    Открытая архитектура персонального компьютера — это архитектура, предусматривающая модульное построение компьютера с возможностью добавления и замены отдельных устройств.
    Важное событие в совершенствовании архитектуры ПК произошло в 2005 году: был создан первый двухъядерный микропроцессор. Каждое ядро способно выполнять функции центрального процессора. Эта особенность архитектуры позволяет производить на ПК параллельную обработку данных, что существенно увеличивает его производительность. Выпускаемые в настоящее время микропроцессоры содержат до 8 ядер.

    Архитектура ненеймановских вычислительных систем

    Несмотря на стремительно нарастающую производительность ЭВМ, которая каждые 4-5 лет по важнейшим показателям практически удваивается, всегда есть классы задач, для которых никакой производительности не хватает. Укажем некоторые из них.
    Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы, которые можно реализовать очень быстро (как иногда говорят, в масштабе реального времени), необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.
    Поиск информации в гигантских базах данных, в информационном пространстве Интернета.
    Моделирование интеллекта — при всех фантастических показателях, объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.
    Быстродействие компьютера с одним центральным процессором имеет физическое ограничение: повышение тактовой частоты процессора ведет к повышению тепловыделения, которое не может быть неограниченным. Перспективный путь повышения производительности компьютера лежит на пути отказа от единственности главных устройств компьютера: либо процессора, либо оперативной памяти, либо шины, либо всего этого вместе. Это путь еще большего отступления от архитектуры фон Неймана.
    Чтобы стало понятнее, зачем компьютеру несколько процессоров, обсудим алгоритм решения простейшей математической задачи. Есть массив из 100 чисел: а1, а2, … , а100. Требуется найти их сумму.
    Нет ничего проще! И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, как-то обозначим их сумму (например, S), затем прибавим к ней третье, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 2.8.

    Рис. 2.8. Алгоритм решения задачи последовательного сложения массива чисел
    Поскольку у человека нет второй головы, иначе эту задачу в одиночку не решить. Но представим, что мы решаем ее не в одиночку, а всем классом (25 человек). Тогда возникает возможность совсем иной последовательности действий.
    Объединим числа в пары — по два на каждого (итого распределили 50 чисел); например, ученик № 1 берет себе а1 и а2, ученик № 2 — а3 и а4, и т. д.
    Даем команду «складывай!» — и каждый складывает свои числа.
    Даем команду «записывай!» — и каждый записывает мелом на классной доске свой результат.
    Поскольку у нас осталось еще 50 необработанных чисел (а51, …, а100), повторяем пункты 1-3. После этого имеем на доске 50 чисел = а1 + а2, …, b50 = а99 + а100 — результаты парных сложений.
    Объединим в пары числа bi и повторим выполнение пунктов 2-4.
    Продолжаем этот процесс (2-5) до тех пор, пока не останется одно число — искомая сумма.
    Первое впечатление, что очень сложно, гораздо сложнее, чем алгоритм на рис. 2.8. Если бы мы захотели записать этот алгоритм в виде блок-схемы, то нам бы пришлось кроме описания порядка и объектов действий сделать то, что мы никогда при записи алгоритмов не делали, — предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и 3 должно завершиться всеми участниками вычислений до того, как они будут продолжены (до перехода к п. 4), иначе даже при решении этой простой задачи наступит хаос.
    Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в 25 раз!
    Следующий вопрос: что надо изменить в устройстве компьютера, чтобы он смог так работать? Для реализации подобной схемы вычислений компьютеру потребуется 25 процессоров, объединенных в одну архитектуру и способных работать параллельно.
    Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.
    Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 2.7 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды 3 произойдет одновременное обращение 25 процессоров к системной шине для пересылки результатов сложения в оперативную память. Но поскольку шина одна, числа по ней могут пересылаться только по одному! Значит, для выполнения команды 3 придется организовать очередь на передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю эта очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они велики? Окупятся ли расходы на 24 дополнительных процессора?
    В возникшей ситуации естественен следующий шаг «изобретательской мысли»: ввод в архитектуру нескольких системных шин. А если еще подумать над возможными проблемами, то и нескольких устройств оперативной памяти.
    Как видите, всё это очень непросто! Обсуждаемые изменения в устройстве компьютера приводят к «ненеймановским» архитектурам. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.

    Варианты реализации ненеймановских вычислительных систем

    В самом общем смысле под параллельными вычислениями понимаются процессы обработки данных, в которых одновременно могут выполняться нескольких машинных операций. Параллельные вычисления реализуются как за счет новой архитектуры вычислительной техники, так и за счет новых технологий программирования. Такие технологии называются параллельным программированием.
    Распределенные вычисления — способ реализации параллельных вычислений путем использования множества компьютеров, объединенных в сеть. Такие вычислительные системы еще называют мультикомпьютерными.
    Распределенные вычисления часто реализуются с помощью компьютерных кластеров — нескольких компьютеров, связанных в локальную сеть и объединенных специальным программным обеспечением, реализующим параллельный вычислительный процесс. Распределенные вычисления могут производиться и с помощью многомашинных вычислительных комплексов, образуемых объединением нескольких отдельных компьютеров через глобальные сети.
    Мультипроцессорные системы образуют единый компьютер, который относится к классу суперкомпьютеров. Достижение параллелизма в них происходит благодаря возможности независимой работы отдельных устройств и их дублирования: несколько процессоров, блоков оперативной памяти, шин и т. д. Мультипроцессорная система может использовать разные способы доступа к общей для всей системы памяти. Если все процессоры имеют равный (однородный) доступ к единой памяти, то соответствующая вычислительная система называется векторным суперкомпьютером.
    Один из самых мощных в мире суперкомпьютеров под названием «Ломоносов» (рис. 2.9) произведен в России и работает в Московском государственном университете. Его быстродействие составляет более ста триллионов операций в секунду.

    Рис. 2.9. Суперкомпьютер «Ломоносов» (МГУ им. М. В. Ломоносова)
    Система основных понятий

    Вопросы и задания

    Расскажите о смене элементной базы компьютеров, происходившей при переходе от одного поколения к другому. Как при этом менялись основные характеристики ЭВМ?
    В чем состоял отход от архитектуры фон Неймана на ЭВМ второго и третьего поколений?
    Что позволило реализовать мультипрограммный режим работы на ЭВМ третьего поколения?
    Чем принципиально отличается архитектура ПК от классической архитектуры компьютеров первых поколений?
    Какие функции выполняют контроллеры внешних устройств на ПК?
    В чем состоит принцип открытости архитектуры ПК?
    Какие функции выполняли первые операционные системы?
    Для каких классов задач нужны сверхпроизводительные вычислительные системы?
    Что такое параллельные вычисления?
    Для примера со сложением чисел 25 учениками попробуйте проанализировать следующие ситуации: в классе всего 1 кусочек мела; в классе 5 кусочков мела; в классе 25 кусочков мела. Оцените, как от этого зависит время решения задачи (учтите еще ширину доски и время перемещения учеников по классу). Попробуйте построить модель такого процесса. Переведите эту ситуацию на язык компьютерной терминологии для многопроцессорных систем.
    Чем отличаются мультикомпьютерные системы от мультипроцессорных? По какому принципу работают суперкомпьютеры?

  4. aldervixx Ответить

    Главная | Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 10 классы | Планирование уроков на учебный год | Информационные процессы в компьютере
    Урок 17
    Информационные процессы в компьютере

    Содержание урока

    Введение
    Однопроцессорная архитектура ЭВМ
    Использование периферийных процессоров
    Архитектура персонального компьютера
    Архитектура ненеймановских вычислительных систем
    Варианты реализации ненеймановских вычислительных систем
    Вопросы и задания

    Вопросы и задания

    1. Расскажите о смене элементной базы компьютеров, происходившей при переходе от одного поколения к другому. Как при этом менялись основные характеристики ЭВМ?
    2. В чем состоял отход от архитектуры фон Неймана на ЭВМ второго и третьего поколений?
    3. Что позволило реализовать мультипрограммный режим работы на ЭВМ третьего поколения?
    4. Чем принципиально отличается архитектура ПК от классической архитектуры компьютеров первых поколений?
    5. Какие функции выполняют контроллеры внешних устройств на ПК?
    6. В чем состоит принцип открытости архитектуры ПК?
    7. Какие функции выполняли первые операционные системы?
    8. Для каких классов задач нужны сверхпроизводительные вычислительные системы?
    9. Что такое параллельные вычисления?
    10. Для примера со сложением чисел 25 учениками попробуйте проанализировать следующие ситуации: в классе всего 1 кусочек мела; в классе 5 кусочков мела; в классе 25 кусочков мела. Оцените, как от этого зависит время решения задачи (учтите еще ширину доски и время перемещения учеников по классу). Попробуйте построить модель такого процесса. Переведите эту ситуацию на язык компьютерной терминологии для многопроцессорных систем.
    11. Чем отличаются мультикомпьютерные системы от мультипроцессорных? По какому принципу работают суперкомпьютеры?
    Следующая страница Информационные процессы в компьютере

  5. pupokvsop Ответить

    Компьютеры, даже персональные, становятся все сложнее. Не так уж давно в гудящем на столе ящике все было просто — чем больше частота, тем больше производительность. Теперь же системы стали многоядерными, многопроцессорными, в них появились специализированные ускорители, компьютеры все чаще объединяются в кластеры.
    Зачем? Как во всем этом многообразии разобраться?
    Что значит SIMD, SMP, GPGPU и другие страшные слова, которые встречаются все чаще?
    Каковы границы применимости существующих технологий повышения производительности?

    Введение

    Откуда такие сложности?
    Компьютерные мощности быстро растут и все время кажется, что все, существующей скорости хватит на все.
    Но нет — растущая производительность позволяет решать проблемы, к которым раньше нельзя было подступиться. Даже на бытовом уровне есть задачи, которые загрузят ваш компьютер надолго, например кодирование домашнего видео. В промышленности и науке таких задач еще больше: огромные базы данных, молекулярно-динамические расчеты, моделирование сложных механизмов — автомобилей, реактивных двигателей, все это требует возрастающей мощности вычислений.
    В предыдущие годы основной рост производительности обеспечивался достаточно просто, с помощью уменьшения размеров элементов микропроцессоров. При этом падало энергопотребление и росли частоты работы, компьютеры становились все быстрее, сохраняя, в общих чертах, свою архитектуру. Менялся техпроцесс производства микросхем и мегагерцы вырастали в гигагерцы, радуя пользователей возросшей производительностью, ведь если «мега» это миллион, то «гига» это уже миллиард операций в секунду.
    Но, как известно, рай бывает либо не навсегда, либо не для всех, и не так давно он в компьютерном мире закончился. Оказалось, частоту дальше повышать нельзя — растут токи утечки, процессоры перегреваются и обойти это не получается. Можно, конечно, развивать системы охлаждения, применять водные радиаторы или совсем уж жидким азотом охлаждать — но это не для каждого пользователя доступно, только для суперкомпьютеров или техноманьяков. Да и при любом охлаждении возможность роста была небольшой, где-то раза в два максимум, что для пользователей, привыкших к геометрической прогрессии, было неприемлемо.
    Казалось, что закон Мура, по которому число транзисторов и связанная с ним производительность компьютеров удваивалась каждые полтора-два года, перестанет действовать.
    Пришло время думать и экспериментировать, вспоминая все возможные способы увеличения скорости вычислений.
    Формула производительности
    Возьмем самую общую формулу производительности:

    Видим, что производительность можно измерять в количестве выполняемых инструкций за секунду.
    Распишем процесс поподробнее, введем туда тактовую частоту:

    Первая часть полученного произведения — количество инструкций, выполняемых за один такт (IPC, Instruction Per Clock), вторая — количество тактов процессора в единицу времени, тактовая частота.
    Таким образом, для увеличения производительности нужно или поднимать тактовую частоту или увеличивать количество инструкций, выполняемых за один такт.
    Т.к. рост частоты остановился, придется увеличивать количество исполняемых «за раз» инструкций.

    Включаем параллельность

    Как же увеличить количество инструкций, исполняемых за один такт?
    Очевидно, выполняя несколько инструкций за один раз, параллельно. Но как это сделать?
    Все сильно зависит от выполняемой программы.
    Если программа написана программистом как однопоточная, где все инструкции выполняются последовательно, друг за другом, то процессору (или компилятору) придется «думать за человека» и искать части программы, которые можно выполнить одновременно, распараллелить.

    Параллелизм на уровне инструкций

    Возьмем простенькую программу:
    a = 1
    b = 2
    c = a + b
    Первые две инструкции вполне можно выполнять параллельно, только третья от них зависит. А значит — всю программу можно выполнить за два шага, а не за три.
    Процессор, который умеет сам определять независимые и непротиворечащие друг другу инструкции и параллельно их выполнять, называется суперскалярным.
    Очень многие современные процессоры, включая и последние x86 — суперскалярные процессоры, но есть и другой путь: упростить процессор и возложить поиск параллельности на компилятор. Процессор при этом выполняет команды «пачками», которые заготовил для него компилятор программы, в каждой такой «пачке» — набор инструкций, которые не зависят друг от друга и могут исполняться параллельно. Такая архитектура называется VLIW (very long instruction word — «очень длинная машинная команда»), её дальнейшее развитие получило имя EPIC (explicitly parallel instruction computing) — микропроцессорная архитектура с явным параллелизмом команд)
    Самые известные процессоры с такой архитектурой — Intel Itanium.
    Есть и третий вариант увеличения количества инструкций, выполняемых за один такт, это технология Hyper Threading В этой технологии суперскалярный процессор самостоятельно распараллеливает не команды одного потока, а команды нескольких (в современных процессорах — двух) параллельно запущенных потоков.
    Т.е. физически процессорное ядро одно, но простаивающие при выполнении одной задачи мощности процессора могут быть использованы для выполнения другой. Операционная система видит один процессор (или одно ядро процессора) с технологией Hyper Threading как два независимых процессора. Но на самом деле, конечно, Hyper Threading работает хуже, чем реальные два независимых процессора т.к. задачи на нем будут конкурировать за вычислительные мощности между собой.
    Технологии параллелизма на уровне инструкций активно развивались в 90е и первую половину 2000х годов, но в настоящее время их потенциал практически исчерпан. Можно переставлять местами команды, переименовывать регистры и использовать другие оптимизации, выделяя из последовательного кода параллельно исполняющиеся участки, но все равно зависимости и ветвления не дадут полностью автоматически распараллелить код. Параллелизм на уровне инструкций хорош тем, что не требует вмешательства человека — но этим он и плох: пока человек умнее микропроцессора, писать по-настоящему параллельный код придется ему.

    Параллелизм на уровне данных

    Векторные процессоры
    Мы уже упоминали скалярность, но кроме скаляра есть и вектор, и кроме суперскалярных процессоров есть векторные.
    Векторные процессоры выполняют какую-то операцию над целыми массивами данных, векторами. В «чистом» виде векторные процессоры применялись в суперкомьютерах для научных вычислений в 80-е годы.
    По классификации Флинна, векторные процессоры относятся к SIMD — (single instruction, multiple data — одиночный поток команд, множественный поток данных).
    В настоящее время в процессорах x86 реализовано множество векторных расширений — это MMX, 3DNow!, SSE, SSE2 и др.
    Вот как, например, выглядит умножение четырех пар чисел одной командой с применением SSE:
    float a[4] = { 300.0, 4.0, 4.0, 12.0 };
    float b[4] = { 1.5, 2.5, 3.5, 4.5 };
    __asm {
    movups xmm0, a ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0
    movups xmm1, b ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1
    mulps xmm1, xmm0 ; // перемножить пакеты плавающих точек: xmm1=xmm1*xmm0
    movups a, xmm1 ; // выгрузить результаты из регистра xmm1 по адресам a
    };
    Таким образом, вместо четырех последовательных скалярных умножений мы сделали только одно — векторное.
    Векторные процессоры могут значительно ускорить вычисления над большими объемами данных, но сфера их применимости ограничена, далеко не везде применимы типовые операции над фиксированными массивами.
    Впрочем, гонка векторизации вычислений далеко не закончена — так в последних процессорах Intel появилось новое векторное расширение AVX (Advanced Vector Extension)
    Но гораздо интереснее сейчас выглядят
    Графические процессоры
    Теоретическая вычислительная мощность процессоров в современных видеокартах растет гораздо быстрее, чем в обычных процессорах (посмотрим знаменитую картинку от NVIDIA)

    Не так давно эта мощность была приспособлена для универсальных высокопроизводительных вычислений с помощью CUDA/OpenCL.
    Архитектура графических процессоров (GPGPU, General Purpose computation on GPU – универсальные расчеты средствами видеокарты), близка к уже рассмотренной SIMD.
    Она называется SIMT — (single instruction, multiple threads, одна инструкция — множество потоков). Так же как в SIMD операции производятся с массивами данных, но степеней свободы гораздо больше — для каждой ячейки обрабатываемых данных работает отдельная нить команд.
    В результате
    1) Параллельно могут выполняться сотни операций над сотнями ячеек данных.
    2) В каждом потоке выполняется произвольная последовательность команд, она может обращаться к разным ячейкам.
    3) Возможны ветвления. При этом, правда, параллельно могут выполняться только нити с одной и той же последовательностью операций.
    GPGPU позволяют достичь на некоторых задачах впечатляющих результатов. но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной палочкой-выручалочкой, а именно
    1) Ускорить на GPU можно только хорошо параллелящийся по данным код.
    2) GPU использует собственную память. Трансфер данных между памятью GPU и памятью компьютера довольно затратен.
    3) Алгоритмы с большим количеством ветвлений работают на GPU неэффективно

    Мультиархитектуры-

    Итак, мы дошли до полностью параллельных архитектур — независимо параллельных и по командам, и по данным.
    В классификации Флинна это MIMD (Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных).
    Для использования всей мощности таких систем нужны многопоточные программы, их выполнение можно «разбросать» на несколько микропроцессоров и этим достичь увеличения производительности без роста частоты. Различные технологии многопоточности давно применялись в суперкомпьютерах, сейчас они «спустились с небес» к простым пользователям и многоядерный процессор уже скорее правило, чем исключение. Но многоядерность далеко не панацея.
    Суров закон, но это закон
    Параллельность, это хороший способ обойти ограничение роста тактовой частоты, но у него есть собственные ограничения.
    Прежде всего, это закон Амдала, который гласит
    Ускорение выполнения программы за счет распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.
    Ускорение кода зависит от числа процессоров и параллельности кода согласно формуле

    Действительно, с помощью параллельного выполнения мы можем ускорить время выполнения только параллельного кода.
    В любой же программе кроме параллельного кода есть и последовательные участки и ускорить их с помощью увеличения количества процессоров не получится, над ними будет работать только один процессор.
    Например, если выполнение последовательного кода занимает всего 25% от времени выполнения всей программы, то ускорить эту программу более чем в 4 раза не получится никак.
    Давайте построим график зависимости ускорения нашей программы от количества параллельно работающих вычислителей-процессоров. Подставив в формулу 1/4 последовательного кода и 3/4 параллельного, получим

    Грустно? Еще как.
    Самый быстрый в мире суперкомпьютер с тысячами процессоров и терабайтами памяти на нашей, вроде бы даже неплохо (75%!) параллелящейся задаче, меньше чем вдвое быстрее обычного настольного четырехядерника.
    Причем всё еще хуже, чем в этом идеальном случае. В реальном мире затраты обеспечение параллельности никогда не равны нулю и потому при добавлении все новых и новых процессоров производительность, начиная с некоторого момента, начнет падать.
    Но как же тогда используется мощь современных очень-очень многоядерных суперкомпьютеров?
    Во многих алгоритмах время исполнения параллельного кода сильно зависит от количества обрабатываемых данных, а время исполнения последовательного кода — нет. Чем больше данных требуется обработать, тем больше выигрыш от параллельности их обработки. Потому «загоняя» на суперкомп большие объемы данных получаем хорошее ускорение.
    Например перемножая матрицы 3*3 на суперкомпьютере мы вряд ли заметим разницу с обычным однопроцессорным вариантом, а вот умножение матриц, размером 1000*1000 уже будет вполне оправдано на многоядерной машине.
    Есть такой простой пример: 9 женщин за 1 месяц не могут родить одного ребенка. Параллельность здесь не работает. Но вот та же 81 женщина за 9 месяцев могут родить (берем максимальную эффективность!) 81 ребенка, т.е.получим максимальную теоретическую производительность от увеличения параллельности, 9 ребенков в месяц или, в среднем, тот же один ребенок в месяц на 9 женщин.
    Большим компьютерам — большие задачи!
    Мультипроцессор
    Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и одно видимое для всех процессоров. адресное пространство.
    Мультипроцессоры отличаются по организации работы с памятью.
    Системы с общей памятью
    В таких системах множество процессоров (и процессорных кэшей) имеет доступ к одной и той же физической оперативной памяти. Такая модель часто называется симметричной мультипроцессорностью (SMP). Доступ к памяти при таком построении системы называется UMA (uniform memory access, равномерный доступ) т.к. любой процессор может обратиться к любой ячейке памяти и скорость этого обращения не зависит от адреса памяти. Однако каждый микропроцессор может использовать свой собственный кэш.

    Несколько подсистем кэш-памяти процессоров, как правило, подключены к общей памяти через шину
    Посмотрим на рисунок.
    Что у нас хорошего?
    Любой процессор обращается ко всей памяти и вся она работает одинаково. Программировать для таких систем проще, чем для любых других мультиархитектур. Плохо то, что все процессоры обращаются к памяти через шину, и с ростом числа вычислительных ядер пропускная способность этой шины быстро становится узким местом.
    Добавляет головной боли и проблема обеспечения когерентности кэшей.
    Когерентность кэша
    Допустим, у нас есть многопроцессорный компьютер. Каждый процессор имеет свой кэш, ну, как на рисунке вверху. Пусть некоторую ячейку памяти читали несколько процессоров — и она попала к ним в кэши. Ничего страшного, пока это ячейка неизменна — из быстрых кэшей она читается и как-то используется в вычислениях.
    Если же в результате работы программы один из процессоров изменит эту ячейку памяти, чтоб не было рассогласования, чтоб все остальные процессоры «видели» это обновление придется изменять содержимое кэша всех процессоров и как-то тормозить их на время этого обновления.
    Хорошо если число ядер/процессоров 2, как в настольном компьютере, а если 8 или 16? И если все они обмениваются данными через одну шину?
    Потери в производительности могут быть очень значительные.
    Многоядерные процессоры
    Как бы снизить нагрузку на шину?
    Прежде всего можно перестать её использовать для обеспечения когерентности. Что для этого проще всего сделать?
    Да-да, использовать общий кэш. Так устроены большинство современных многоядерных процессоров.

    Посмотрим на картинку, найдем два отличия от предыдущей.
    Да, кэш теперь один на всех, соответственно, проблема когерентности не стоит. А еще круги превратились в прямоугольники, это символизирует тот факт, что все ядра и кэши находятся на одном кристалле. В реальной действительности картинка несколько сложнее, кэши бывают многоуровневыми, часть общие, часть нет, для связи между ними может использоваться специальная шина, но все настоящие многоядерные процессоры не используют внешнюю шину для обеспечения когерентности кэша, а значит — снижают нагрузку на нее.
    Многоядерные процессоры — один из основных способов повышения производительности современных компьютеров.
    Уже выпускаются 6 ядерные процессоры, в дальшейшем ядер будет еще больше… где пределы?
    Прежде всего «ядерность» процессоров ограничивается тепловыделением, чем больше транзисторов одновременно работают в одном кристалле, тем больше этот кристалл греется, тем сложнее его охлаждать.
    А второе большое ограничение — опять же пропускная способность внешней шины. Много ядер требуют много данных, чтоб их перемалывать, скорости шины перестает хватать, приходится отказываться от SMP в пользу
    NUMA
    NUMA (Non-Uniform Memory Access — «неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — архитектура, в которой, при общем адресном пространстве, скорость доступа к памяти зависит от ее расположения Обычно у процессора есть ” своя” память, обращение к которой быстрее и «чужая», доступ к которой медленнее.
    В современных системах это выглядит примерно так

    Процессоры соединены с памятью и друг с другом с помощью быстрой шины, в случае AMD это Hyper Transport, в случае последних процессоров Intel это QuickPath Interconnect
    Т.к. нет общей для всех шины то, при работе со «своей» памятью, она перестает быть узким местом системы.
    NUMA архитектура позволяет создавать достаточно производительные многопроцессорные системы, а учитывая многоядерность современных процессоров получим уже очень серьезную вычислительную мощность «в одном корпусе», ограниченную в основном сложностью обеспечения кэш-когерентности этой путаницы процессоров и памяти.
    Но если нам нужна еще большая мощность, придется объединять несколько мультипроцессоров в
    Мультикомпьютер
    Мультикомпьютер — вычислительная система без общей памяти, состоящая из большого числа взаимосвязанных компьютеров (узлов), у каждого из которых имеется собственная память. При работе над общей задаче узлы мультикомпьютера взаимодействуют через отправку друг другу сообщений.
    Современные мультикомпьютеры, построенные из множества типовых деталей, называют вычислительными кластерами.
    Большинство современных суперкомпьютеров построены по кластерной архитектуре, они объединяют множество вычислительных узлов с помощью быстрой сети (Gigabit Ethernet или InfiniBand) и позволяют достичь максимально возможной при современном развитии науки вычислительной мощности.
    Проблемы, ограничивающие их мощность, тоже немаленькие
    Это:
    1) Программирование системы с параллельно работающими тысячами вычислительных процессоров
    2) Гигантское энергопотребление
    3) Сложность, приводящая к принципиальной ненадежности

    Сводим все воедино

    Ну вот, вкратце пробежались почти по всем технологиям и принципам построения мощных вычислительных систем.
    Теперь есть возможность представить себе строение современного суперкомпьютера.
    Это мультикомпьютер-кластер, каждый узел которого — NUMA или SMP система с несколькими процессорами, каждый из процессоров с несколькими ядрами, каждое ядро с возможностью суперскалярного внутреннего параллелизма и векторными расширениями. Вдобавок ко всему этому во многих суперкомпьютерах установлены GPGPU — ускорители.
    У всех этих технологий есть плюсы и ограничения, есть тонкости в применении.
    А теперь попробуйте эффективно загрузить-запрограммировать всё это великолепие!
    Задача нетривиальная… но очень интересная.
    Что-то будет дальше?
    Источники информации
    Курс «Основы параллельных вычислений» Интернет-университета суперкомпьютерных технологий
    Классификация Флинна на сайте parallels.ru
    MultiProcessors, their Memory organizations and Implementations by Intel & AMD
    Многоядерность, как способ увеличения производительности вычислительной системы
    Википедия и Интернет
    P.S. Текст родился как попытка самому разобраться и упорядочить в голове информацию о технологиях из области высокопроизводительных вычислений. Возможны неточности и ошибки, буду очень благодарен за замечания и комментарии.

  6. Mr. DoS Ответить

    7
    Компьютерные системы Состав вычислительной системы называется конфигурацией. Аппаратные и программные средства вычислительной техники принято рассматривать отдельно. Соответственно, отдельно рассматривают аппаратную конфигурацию вычислительных систем и их программную конфигурацию.

    8
    Аппаратное обеспечение К аппаратному обеспечению вычислительных систем относятся устройства и приборы, образующие аппаратную конфигурацию. Современные компьютеры имеют блочно- модульную конструкцию – аппаратную конфигурацию, необходимую для исполнения конкретных видов работ, ее можно собирать из готовых узлов и блоков.

    9
    По способу расположения устройств относительно центрального процессорного устройства (ЦПУ Central Processing Unit, CPU) различают внутренние и внешние устройства. Внешними, как правило, являются большинство устройств ввода-вывода данных (их также называют периферийными устройствами) и некоторые устройства, предназначенные для длительного хранения данных.

    10
    Согласование между отдельными узлами и блоками выполняют с помощью переходных аппаратно-логических устройств, называемых аппаратными интерфейсами. Стандарты на аппаратные интерфейсы в вычислительной технике называют протоколами. Протокол – это совокупность технических условий, которые должны быть обеспечены разработчиками устройств для успешного согласования их работы с другими устройствами.

    11
    Многочисленные интерфейсы, можно условно разделить на две большие группы: последовательные и параллельные. Через последовательный интерфейс данные передаются последовательно, бит за битом, а через параллельный – одновременно группами битов. Количество битов, участвующих в одной посылке, определяется разрядностью интерфейса, например, восьмиразрядные параллельные интерфейсы передают один байт (8 бит) за один цикл.

    12
    С развитием техники появились новые, высокоскоростные последовательные интерфейсы, не уступающие параллельным, а нередко и превосходящие их по пропускной способности. Сегодня последовательные интерфейсы применяют для подключения к компьютеру любых типов устройств.

    13
    Базовая аппаратная конфигурация персонального компьютера Персональный компьютер – универсальная техническая система. Его конфигурацию (состав оборудования) можно гибко изменять по мере необходимости. существует понятие базовой конфигурации, которую считают типовой. В настоящее время в базовой конфигурации рассматривают четыре устройства: системный блок, монитор, клавиатура, мышь.

    14
    Системный блок Системный блок представляет собой основной узел, внутри которого установлены наиболее важные компоненты. Устройства, находящиеся внутри системного блока, называют внутренними, а устройства, подключаемые к нему снаружи, – внешними. Внешние дополнительные устройства, предназначенные для ввода, вывода и длительного хранения данных, также называют периферийными.

    15
    По внешнему виду системные блоки различаются формой корпуса. Корпуса персональных компьютеров выпускают в горизонтальном (desktop) и вертикальном (tower) исполнении. Корпуса, имеющие вертикальное исполнение, различают по габаритам: полноразмерный (big tower), среднеразмерный (midi tower) и малоразмерный (mini tower

    16
    Среди корпусов, имеющих горизонтальное исполнение, выделяют плоские и особо плоские (slim). Корпуса персональных компьютеров поставляются вместе с блоком питания и, таким образов, мощность блока питания также является одним из параметров корпуса. Для массовых моделей достаточной является мощность блока питания Вт.

    17
    Материнская плата основная плата ПК. На ней размещаются: процессор основная микросхема, выполняющая большинство математических и логических операций; микропроцессорный комплект (чипсет) набор микросхем, управляющих работой внутренних устройств компьютера и определяющих основные функциональные возможности материнской платы; шины наборы проводников, по которым происходит обмен сигналами между внутренними устройствами компьютера;

    18
    А также: оперативная память (оперативное запоминающее устройство, ОЗУ) набор микросхем, предназначенных для временного хранения данных, когда компьютер включен; ПЗУ (постоянное запоминающее устройство) микросхема, предназначенная для длительного хранения данных, в том числе и когда компьютер выключен; разъемы для подключения дополнительных устройств (слоты).

    19
    Жесткий диск основное устройство для долговременного хранения больших объемов данных и программ. На самом деле это не один диск, а группа дисков, имеющих магнитное покрытие и вращающихся с высокой скоростью.

    20
    Оперативная память (RAM Random Access. Memory) это массив кристаллических ячеек, способных хранить данные. Существует много различных типов оперативной памяти, но с точки зрения физического принципа действия различают динамическую память (DRAM) и статическую память (SRAM).

    21
    Ячейки динамической памяти (DRAM) можно представить в виде микро конденсаторов, способных накапливать заряд на своих обкладках. Это наиболее распространенный и экономически доступный тип памяти.

    22
    Ячейки статической памяти (SRAM) можно представить как электронные микроэлементы триггеры, состоящие из нескольких транзисторов. В триггере хранится не заряд, а состояние (включен/выключен), поэтому этот тип памяти обеспечивает более высокое быстродействие, хотя технологически он сложнее и, соответственно, дороже.

    23
    Процессор основная микросхема компьютера, в которой и производятся все вычисления. Конструктивно процессор состоит из ячеек, похожих на ячейки оперативной памяти, но в этих ячейках данные могут не только храниться, но и изменяться. Внутренние ячейки процессора называют регистрами. данные, попавшие в некоторые регистры, рассматриваются не как данные, а как команды, управляющие обработкой данных в других регистрах

    24
    Монитор – устройство визуального представления данных. Это не единственно возможное, но главное устройство вывода. Его основными потребительскими параметрами являются: –тип, –размер и шаг маски экрана, –максимальная частота регенерации изображения, – класс защиты.

    25
    На экране жидкокристаллического монитора изображение образуется в результат прохождения белого света лампы подсветки через ячейки, прозрачность которых зависит от приложенного напряжения. Элементарная триада состоит из трех ячеек зеленого, красного и синего цвета и соответствует одному пикселю экрана. Размер монитора по диагонали и разрешение экрана однозначно определяет размер такой триады и, тем самым, зернистость изображения.

    26
    Частота регенерации (обновления) изображения показывает, сколько раз в течение секунды монитор может полностью сменить изображение (поэтому ее также называют частотой кадров). Этот параметр зависит не только от монитора, но и от свойств и настроек видеоадаптера (см. ниже), хотя предельные возможности определяет все-таки монитор.

    27
    Частоту регенерации изображения измеряют в герцах (Гц). Чем она выше, тем четче и устойчивее изображение, тем меньше утомление глаз, тем больше времени можно работать с компьютером непрерывно. При частоте регенерации порядка 60 Гц мелкое, мерцание изображения может быть заметно невооруженным глазом. Сегодня такое значение считается недопустимым.

    28
    Для ЭЛТ-мониторов минимальным считают значение 75 Гц, нормативным – 85 Гц и комфортным Гц и более. У жидкокристаллических мониторов изображение более инерционно, так что мерцание подавляется автоматически. Для них частота обновления в 75 Гц уже считается комфортной.

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41
    §21. Развитие архитектуры вычислительных систем.

    42
    Направления развития архитектуры вычислительных систем определяются требованиями большей эффективности и скорости обработки информации; появлением новых технических возможностей.

    43
    Задачи сверхбыстрых компьютеров: 1. математические расчёты, лежащие в основе реализации математических моделей многих процессов. 2. поиск информации в гигантских базах данных, достигающих по объёму хранимой информации нескольких терабайтов. 3. моделирование интеллекта.

    44
    КАК МОЖНО УСКОРИТЬ РАБОТУ КОМПЬЮТЕРА У компьютера имеется много внешних устройств. Но только один, нацеленный непосредственно на выполнение программы процессор, одна шина и одна оперативная память.

    45
    распараллеливание вычислений – процессы обработки данных, в которых одновременно могут выполняться несколько машинных операций; принципиально новые архитектуры, отличные от архитектуры фон Неймана. многопроцессорные вычислительные комплексы

    46
    Распределённые вычисления – способ реализации параллельных вычислений путём использования множества компьютеров, объединённых в сеть. мультикомпьютерные системы

    47
    Кластеры несколько компьютеров, связанных в локальную сеть и объединённых специальным программным обеспечением, реализующим параллельный вычислительный процесс. многомашинные вычислительные комплексы

    48
    Мультипроцессорная система- реализуется на одном компьютере Все процессоры имеют равный (однородный) доступ к единой памяти. Cray – мощнейшие в мире суперкомпьютеры. Для каждого процессора выделяется свой раздел памяти компьютера.

    49

    50
    Вопросы: Для каких классов задач нужны сверхпроизводительные вычислительные системы? Что такое параллельные вычисления? Что такое распределённые вычисления? Чем отличаются мультикомпьютерные системы от мультипроцессорных?

    51
    Источники информации: Информатика и ИКТ. Базовый уровень кл.Семакин И. Г., Хеннер Е. К., Москва. Бином. Лаборатория знаний контент сайта Office.com p jpg/220px-Cray-1-p jpghttp://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Cray-1- p jpg/220px-Cray-1-p jpg

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *