Третья контрольная работа (1127791)
Текст из файла
1) Учет параметров ЭВМ при программировании.
Расслоение оперативной памяти.
Реализация оперативной памяти с использованием некоторого множества микросхем позволяет использовать заложенный в ней потенциальный параллелизм. Для этого микросхемы памяти объединяются в банки или модули, содержащие фиксированное число слов, причем только к одному из этих слов банка возможно обращение в каждый момент времени. Чтобы получить большую скорость доступа, нужно осуществлять одновременный доступ к нескольким банкам памяти. Одна из общих методик, используемых для этого, называется расслоением памяти. При расслоении памяти банки организуются так, чтобы N последовательных адресов памяти i, i + 1, i + 2, ..., i + N-1 приходились на N различных банков. Степень или коэффициент расслоения определяют распределение адресов по банкам памяти. Схема управления памятью реализует конвейер совмещения обращений к различным блокам памяти. Такая организация памяти увеличивает в N раз обращения по последовательным адресам, что является характерным при загрузке информации в кэш память и сохранении одного из её блоков. При подобной организации оперативной памяти можно использовать для неё микросхемы в N раз более медленные, чем микросхемы кэш памяти и не увеличивать разрядность шины данных.
Наиболее общим случаем расслоения памяти является возможность реализации нескольких независимых обращений, когда несколько контроллеров памяти позволяют банкам памяти работать самостоятельно. Такое решение наиболее характерно для многопроцессорных компьютеров.
Для банков одинаковой емкости: B1,B2,B3,..Bm-1 адрес i трансформируется в адрес d внутри банка Bb расчетом:
i=d * m + b, где d=>0, 0<=b<=m-1
При расслоении на четыре распределение адресов в банках будет:
Адреса в банках-b Банк 1 Банк 2 Банк 3 Банк 4
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
При конвейерном доступе при М-кратном расслоении и регулярной выборке на обращение к одной ячейке памяти может тратиться 1/М цикла памяти. Но возможны конфликты по доступу, если шаг регулярной выборки достаточно большой или кратен числу банков памяти.
Cache-aware
Cache-aware алгоритмы -- это алгоритмы, учитывающие параметры кеша.
Структуры данных
В современных компьютерах многоуровневая структура кэша, которая позволяет очень быстро выполнять обход массива. Попадание кэша настолько быстрая операция, что можно учитывать только промахи. Если строка кэша имеет размер B, то колличество промахов в массиве равно n/B. Если рассматривать связный список, то в худшем случае на доступ к каждому узлу будет приходится промах. Но даже в лучшем случае, когда узлы списка расположенны последовательно, из-за того, что узел у списка больше, может потребоваться в несколько раз больше кэша для прохода по списку.
Пусть у нас есть массив из 60 миллионов элементов и мы хотим вставить элементы в середину. Несмотря на преимущества, которые дает кэш, эта операция займет недели (Какого размера должны быть элементы чтобы копирование 30 миллионов элементов заняло недели? Секунды, ну максимум минуты...). Поэтому в программах, где вставка и удаление элементов является частой операцией, массивы неприменимы. Также недостатком массивов явлеется то, что они медленно увеличиваются и фрагментируют память.
Поэтому нужна структура, которая сочетает в себе преимущества кэша, которые дает массив, но при этом позволяет быстро вставлять элементы и увеличивать размер, как это свойственно спискам.
Такой структурой будет связный список маленьких массивов. А, чтобы эту структуру сделать cache-aware, нужно, чтобы каждый узел такого связного списка был размером B (т.е. размером со строку кэша).
Оптимизация сортировки слиянием
Особенность Cache-aware версий алгоритма сортировки слиянием -- его операции были специально выбраны для сведения к минимуму перемещения страниц в и из кэш-памяти машины. Например, tiled алгоритм сортировки слиянием останавливает разбиение на подмассивы, когда размер подмассива становится равным S, где S -- это колличествр элементов данных, которые можно разместить на одной странице в памяти. Каждый из этих подмассивов сортируется сортировкой для которой не требуется дополнительной памяти, чтобы избежать подкачки, отсортированние подмассивы сортируются обычным слиянием.
2) Коммуникационные технологии СуперЭВМ.
Архитектура мультипроцессорных систем может быть векторной, конвейерной или кластерной (последняя наиболее популярна). Ядро системы – так называемые вычислительные узлы (рабочие компьютеры), с несколькими процессорами. Сотни, тысячи таких узлов устанавливаются в специальные шкафы и соединяются между особой сверхбыстрой сетью, используемой для организации параллельного счета. Иногда для этого применяют широкодоступные сетевые технологии, однако, когда речь идет о промышленном решении, то используют специализированные инструменты параллельного счета: InfiniBand, SCI, Myrinet и др.
Вычислительная мощность суперкомпьютеров растет высокими темпами за счет увеличения числа узлов, процессоров, ядер и внедрения различных ускорителей, однако эффективность использования суперкомпьютеров и их реальная производительность на многих задачах попадает в зависимость от реализации коммуникационных сетей. Для задач с малым количеством обменов по сети, которые легко разбиваются на независимые части, не требуется специализированных решений, и такие проекты, как GPUGRID.net и SETI@Home, это наглядно показывают. Однако для эффективного решения задач с интенсивным обменом данными на распределенной вычислительной системе требуется не только использовать специальные библиотеки и языки программирования, но и привлекать алгоритмы, адаптированные на параллельное выполнение с учетом специфики оборудования.
Производительность суперкомпьютера на задачах с интенсивным обменом данными между узлами (задачи моделирования, задачи на графах и нерегулярных сетках, вычисления с использованием разреженных матриц) в основном определяется производительностью сети, поэтому применение обычных коммерческих решений (например, Gigabit Ethernet) крайне неэффективно. Однако реальная сеть – это всегда компромиссное решение, при разработке которого расставляются приоритеты между ценой, производительностью, энергопотреблением и другими требованиями, во многом конфликтующими между собой: попытки улучшения одной характеристики могут приводить к ухудшению другой.
Коммуникационная сеть состоит из узлов, в каждом из которых есть сетевой адаптер, соединенный с одним или несколькими маршрутизаторами, которые в свою очередь соединяются между собой высокоскоростными каналами связи (линками).
Структура сети, определяющая, как именно связаны между собой узлы системы, задается топологией сети (обычно решетка, тор или толстое дерево) и набором структурных параметров: количество измерений, количество уровней дерева, размеры сторон тора, число коммутаторов на уровнях дерева, число узлов сети, портов у маршрутизаторов и т. д.
Статические сети имеют жестко фиксированные соединения, вход и выход зафиксированы без возможности переключения. Наиболее простой топологией сети является линейка – одномерная сетка. Для обеспечения передачи информации между несмежными узлам используются транзитные пересылки. Для цепочки из М узлов наиболее медленная пересылка есть пересылка между конечными ПЭ линейки, и она потребует (М-1) транзитных пересылок. Число таких пересылок для любой статической топологии сети считается ее параметром и называется диаметром сети. Если связать конечные ПЭ линейки, то такая топология - кольцо - будет иметь меньший диаметр. Сети могут иметь вид: одномерный линейный массив, двумерное кольцо, звезда, сетка и гексагональный массив, дерево, трехмерное полностью связанное хордовое кольцо, 3 -мерный куб, сети из циклически связанных 3-мерных кубов, D - мерный массив с топологией гиперкуба, тасовка (совершенная, обменная). Недостаток - необходимость маршрутизации транзитных сообщений. По топологии гиперкуба, каждое ПЭ связывается со своим ближайшем соседом в n мерном пространстве. У каждого узла в двумерном гиперкубе имеются два ближайших соседа, в трехмерном - три, в четырехмерном - четыре.
Если стоит задача осуществления эффективного управления межсегментным трафиком с целью уменьшения числа критичных участков сети, то статические коммутаторы не смогут удовлетворить всем требованиям. Совсем иначе дело обстоит с динамическими коммутаторами. Эти устройства не только уделяют особое внимание пересылке кадров по предписанному адресу, но и обрабатывают таблицу соответствий отдельных узлов конкретным портами, к которым они подключены. Эта информация обновляется каждый раз, как только очередная машина начинает передачу данных (или же через заранее заданные интервалы времени). Таблица постоянно обновляющихся комбинаций узел/порт предоставляет коммутатору возможность быстро направлять пакеты через соответствующие сегменты. Динамические коммутаторы позволят экономить время и силы в течение еще довольно продолжительного времени. Поскольку эти устройства обновляют свои таблицы соединений каждый раз, когда устройства начинают передачу, можно переупорядочить сеть, переключая рабочие станции на разные порты до тех пор, пока сеть не будет сконфигурирована оптимальным образом. Таблицы будут обновляться автоматически, и сеть будет в полном порядке.
В сетях с динамической коммутацией:
• разрешается устанавливать соединение по инициативе пользователя сети;
• коммутация выполняется только на время сеанса связи, а затем (по инициативе одного из пользователей) разрывается;
• в общем случае пользователь сети может соединиться с любым другим пользователем сети;
• время соединения между парой пользователей при динамической коммутации составляет от нескольких секунд до нескольких часов и завершается после выполнения определенной работы — передачи файла, просмотра страницы текста или изображения и т.п.
Динамический коммутатор не только повышает пропускную способность, но и увеличивает степень защищенности информации в сети, так как пакеты передаются строго от источника к адресату. Динамические коммутаторы позволяют управлять трафиком в сети, разрешая передачу пакетов только для определенных сочетаний адресов отправителя и получателя. Разрешенные пары адресов образуют виртуальный сегмент, доступ к которому остальным запрещен. Каждая станция может входить в состав нескольких виртуальных сегментов. Динамические коммутаторы применяются в локальных сетях для повышения пропускной способности. Наиболее явны преимущества динамической коммутации в случае, когда идет постоянное обращение к одному или нескольким высокопроизводительным серверам. Выделение каждому серверу отдельного Switch-порта и подключение к другим портам отдельных сегментов сети позволяет существенно снизить количество коллизий в сети. Другое важное преимущество применения динамических коммутаторов -- это возможность организации виртуальных сетей. У администратора появляется возможность логической конфигурации сети в соответствии с реальными информационными связями без изменения физической коммутации.
Для оценки производительности коммуникационной сети чаще всего используются три характеристики: пропускная способность (количество данных, передаваемых за единицу времени); коммуникационная задержка (время передачи данных по сети); темп выдачи сообщений (обычно отдельно рассматривают темп выдачи при посылке, приеме и передаче пакетов между внутренними блоками маршрутизатора).
Для полноты картины данные характеристики измеряются на разных видах трафика, например когда один узел рассылает данные всем остальным, либо, наоборот, все узлы шлют данные одному, либо когда все узлы посылают данные случайным адресатам. К современным сетям предъявляются требования по функциональности:
• эффективная реализация библиотеки Shmem, как варианта поддержки модели односторонних коммуникаций, и GASNet, на которой основаны реализации многих PGAS-языков;
• эффективная реализация MPI (обычно для этого требуется эффективная поддержка механизма кольцевых буферов и подтверждений для принятых пакетов);
• эффективная поддержка коллективных операций: широковещательной рассылки (посылки одинаковых данных одновременно многим узлам), редукции (применение бинарной операции, например сложения, ко множеству значений, получаемых от различных узлов), распределения элементов массива по множеству узлов (scatter), сборки массива из элементов, находящихся на разных узлах (gather);
• эффективная поддержка операций межузловой синхронизации (как минимум барьерной), эффективное взаимодействие с сетью большого количества процессов на узле, обеспечение надежной доставки пакетов.
Также важна эффективная поддержка работы адаптера с памятью узла напрямую без участия процессора.
3) Особенности систем программирования, которые могут привести к неоднозначным результатам на языке высокого уровня.
Системой программирования называется комплекс программных средств, предназначенных для поддержки программного продукта на протяжении всего жизненного цикла этого продукта.
К этапам жизненного цикла можно отнести:
• Анализ: определение, формализация, документирование требований к будущему программному продукту;
• Проектирование: формирование архитектуры системного программного продукта
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.