1631124674-6a00ac47f208bd132d328527d69fe75d (848586), страница 9
Текст из файла (страница 9)
==
LAPACK (Linear Algebra PACKage) — библиотека с открытым исходным кодом, содержащая методы для решения основных задач линейной алгебры. Написана на языке Fortran 90 с использованием другой библиотеки BLAS и является развитием пакета LINPACK.
Доступны несколько альтернативных языковых привязок: LAPACK++ для C++, SciPy для Python
46. Эволюция скорости вычислений и скорости доступа к памяти в компьютерах с 1980-х годов по настоящее время (Киселёва)
IV поколение ЭВМ. 1980-1990-е годы
Переход к машинам четвертого поколения – ЭВМ на больших интегральных схемах (БИС) и транзисторах (прибор для усиления сигнала)– происходил во второй половине 70-х годов и завершился приблизительно к 1980 г.
В начале 1970-х полупроводниковая промышленность освоила выпуск микросхем высокой степени интеграции — на сравнительно малой площади теперь умещались десятки тысяч транзисторов. Появились микросхемы памяти емкостью 1 Кбит (1024 бит), небольшие чипы для калькуляторов и даже первые микропроцессоры.
Теперь на одном кристалле интегральной схемы размером 1 см2 стали размещаться сотни тысяч электронных элементов. Скорость и объем памяти возросли в десятки тысяч раз по сравнению с машинами первого поколения и составили примерно 109 операций в секунду и 107 слов соответственно.
Наиболее крупным достижением, связанным с применением БИС, стало создание микропроцессоров, а затем на их основе микро-ЭВМ. Они имеют достаточно высокую производительность, экономичны в эксплуатации и дешевы. Дальнейшее развитие микро-ЭВМ привело к созданию персональных компьютеров (ПК), широкое распространение которых началось с 1975 г., когда фирма IBM выпустила свой первый персональный компьютер IBM PC. Особый вклад в развитие первичной памяти (доступна процессору без обращения к внешним устройствам) внес доктор Роберт Деннард, сотрудник компании IBM. Он разработал первый чип на транзисторе и небольшом конденсаторе. В 1970 году рынок подстегнула компания Intel, представив чип памяти i1103 емкостью 1 Кбит. Спустя два года этот продукт стал самым продаваемым полупроводниковым чипом памяти в мире. Микросхемы высокой степени интеграции быстро вытеснили старые типы памяти. С переходом на следующий уровень развития громоздкие мейнфреймы уступили место настольным компьютерам. Основная память в то время окончательно отделилась от вторичной, оформилась в виде отдельных микрочипов емкостью 64, 128, 256, 512 Кбит и даже 1 Мбит.
В период машин 4 поколения стали также серийно производиться супер-ЭВМ. В нескольких серийных моделях была достигнута производительность свыше 1 млрд. операций в секунду. К числу наиболее значительным разработкам четвертого поколения относится ЭВМ «Крей-3». Примером отечественной суперЭВМ является многопроцессорный вычислительный комплекс «Эльбрус».
V поколение ЭВМ. 1990-настоящее время
С 90-х годов в истории развития вычислительной техники наступила пора пятого поколения. Высокая скорость выполнения арифметических вычислений дополняется высокими скоростями логического вывода. Сверхбольшие интегральные схемы повышенной степени интеграции, использование оптоэлектронных принципов (лазеры, голография). ЭВМ Способны воспринимать информацию с рукописного или печатного текста, с бланков, с человеческого голоса, узнавать пользователя по голосу, осуществлять перевод с одного языка на другой. Архитектура содержит несколько блоков: блок общения – обеспечивает интерфейс между пользователем и ЭВМ на естественном языке; база знаний – хранятся знания, накопленные человечеством в различных предметных областях; решатель - организует подготовку программы решения задачи на основании знаний, полученных из базы знаний и исходных данных, полученных из блока общения. Ядро вычислительной системы составляет ЭВМ высокой производительности.
Наконец, микросхемы первичной памяти переехали с материнских плат на отдельные планки, это сильно облегчило установку и замену неисправных компонентов. Частоты начали расти, время доступа уменьшаться. Первые синхронные динамические чипы SDRAM появились в 1993 году, их представила компания Samsung. Новые микросхемы работали на частоте 100 МГц, время доступа равнялось 10 нс. Во времена первых Apple Macintosh блок оперативной памяти занимал огромную планку (на фото сверху), тогда как объем не превышал 64 Кб.
К 2000 году SDRAM вытеснил всех конкурентов. В связи с появлением новой базовой структуры ЭВМ в машинах пятого поколения широко используются модели и средства, разработанные в области искусственного интеллекта.
Дальнейшая эволюция не так интересна. Единственное значимое событие произошло в 2000 году, когда на рынке появилась оперативная память стандарта DDR SDRAM. Она обеспечила удвоенную (по сравнению с обычной SDRAM) пропускную способность и создала задел для будущего роста. Вслед за DDR в 2004 году появился стандарт DDR2, который до сих пор пользуется наибольшей популярностью.
47.Управление уровнями параллелизма для создания эффективных параллельных программ (Агзямова)
Методы и средства реализации параллелизма зависят от того, на каком уровне он должен обеспечиваться. Обычно различают следующие уровни параллелизма:
Уровень заданий. Несколько независимых заданий одновременно выполняются на разных процессорах, практически не взаимодействуя друг с другом. Этот уровень реализуется на ВС (выч. системах) с множеством процессоров в многозадачном режиме.
Уровень программ. Части одной задачи выполняются на множестве процессоров. Данный уровень достигается на параллельных ВС (выч. системах).
Уровень команд. Выполнение команды разделяется на фазы, а фазы нескольких последовательных команд могут быть перекрыты за счет конвейеризации. Уровень достижим на ВС с одним процессором.
Уровень битов (арифметический уровень). Биты слова обрабатываются один за другим, это называется бит - последовательной операцией. Если биты слова обрабатываются одновременно, говорят о бит - параллельной операции. Данный уровень реализуется в обычных и суперскалярных процессорах.
Но в нашем курсе рассматриваются такие:
1. Физический уровень – ядра процессора.
2. Виртуальный физический уровень – технология, позволяющая операционной системе воспринимать одно физическое ядро как два логических.
3. Системный уровень – операционная система автоматически распределяет задачи по доступным ядрам, заставляя их обрабатывать информацию параллельно.
4. Программный – программы, исполняемые в рамках системы, используют ее механизм распределения задач.
К понятию уровня параллелизма тесно примыкает понятие гранулярности. Это мера отношения объема вычислении, выполненных в параллельной задаче, к объему коммуникаций (для обмена сообщениями). Степень гранулярности варьируется от мелкозернистой до крупнозернистой. Определим понятия крупнозернистого (coarse grained), среднезернистого (medium grained) и мелкозернистого (fine grained) параллелизма.
Крупнозернистый параллелизм: каждое параллельное вычисление достаточно независимо от остальных, причем требуется относительно редкий обмен информацией между отдельными вычислениями. Единицами распараллеливания являются большие и независимые программы, включающие тысячи команд. Этот уровень параллелизма обеспечивается операционной системой.
Среднезернистый параллелизм: единицами распараллеливания являются вызываемые процедуры, включающие в себя сотни команд. Обычно организуется как программистом, так и компилятором.
Мелкозернистый параллелизм: каждое параллельное вычисление достаточно мало и элементарно, составляется из десятков команд. Обычно распараллеливаемыми единицами являются элементы выражения или отдельные итерации цикла, имеющие небольшие зависимости по данным. Сам термин «мелкозернистый параллелизм» говорит о простоте и быстроте любого вычислительного действия. Характерная особенность мелкозернистого параллелизма заключается в приблизительном равенстве интенсивности вычислений и обмена данными. Этот уровень параллелизма часто используется распараллеливающим (векторизирующим) компилятором.
Эффективное параллельное исполнение требует искусного баланса между степенью гранулярности программ и величиной коммуникационной задержки, возникающей между разными гранулами. В частности, если коммуникационная задержка минимальна, то наилучшую производительность обещает мелкоструктурное разбиение программы. Это тот случай, когда действует параллелизм данных. Если коммуникационная задержка велика (как в слабосвязанных системах), предпочтительней крупнозернистое разбиение программ. взято отсюда
---------------------------------------------------------------------------------------------------------------------------
(другая интерпретация вопроса)
Так как разные уровни параллелизма слабо зависят друг от друга (см. 41) и, в частности, потоки могут исполняться на разных физических ядрах, то могут возникать накладные расходы на их перемещение. Для их предотвращения можно применять привязку потоков к ядрам (processor affinity).
Выполняется, например, при помощи системных вызовов sched_getaffinity и sched_setaffinity (Linux) или вызовов API SetThreadAffinityMask и SetProcessAffinityMask (Windows)
(Вик.) Привязка к процессору (англ. processor affinity), или закрепление процессора, или привязка к кэшу, — технология, которая обеспечивает закрепление и открепление процесса или потока к конкретному ядру центрального процессора, центральному процессору или набору процессоров, так что процесс или поток будут выполняться только на указанном ядре, процессоре или процессорах, а не на любом процессоре многопроцессорной системы. Привязку процессора можно рассматривать как модификацию алгоритма планирования центральной очереди задач в многопроцессорной операционной системе. Каждому элементу в очереди задач сопоставлен тег, задающие «родственные» ему процессоры.
При выделении ресурсов каждая задача предпочтительным образом распределяется для выполнения на одном из «родственных» процессоров. Технология привязки к процессору использует тот факт, что данные и настройки процесса, который ранее был запущен на данном процессоре, могут быть оказаться более быстродоступными для этого процессора, чем для какого-то ещё. Это может происходить, например, из-за кэширования данных процесса в кэш-памяти процессора, а так же в некоторых других ситуациях. Планирование выполнения такого процесса на одном и том же процессоре повышает его производительность за счет уменьшения снижающих производительность событий, таких как потери в кеше.
Кроме того, в ряде систем каждый из процессоров может иметь более быстрый доступ к близкому ему региону оперативной памяти. При этом, оказывается рациональным сохранять постоянную привязку процесса к тому процессору, доступ которого к оперативной памяти, где расположены данные этого процесса, является более быстрым.
Практическим примером сродства процессора является выполнение нескольких экземпляров немногопоточного приложения, такого как некоторое программное обеспечение для рендеринга графики.
Реализация алгоритма планирования задач, обеспечивающего возможность привязки к процессору, реализуется с учётом особенностей конкретных процессора и построения многопроцессорной системы, управляя которой будет работать такой алгоритм. Некоторые реализации при определенных обстоятельствах позволят перевести задачу на другой процессор, преодолевая привязку. Это делается в тех случаях, когда, с точки зрения планировщика, такое переключение приведет к повышению эффективности выполнения задач. Например, когда двум задачам, интенсивно использующих процессор (A и B), установлена привязка к одному и тому же процессору, а другой процессор не используется, многие планировщики переключат задачу B на второй процессор, чтобы максимально использовать доступные системе процессорные мощности. Привязка задачи B к новому процессору в такой момент будет выставлена самим планировщиком.