Pull to refresh

Построение планов параллельного выполнения программ для процессоров со сверхдлинным машинным словом (проект)

Level of difficultyMedium
Reading time14 min
Views2.7K

Процессоры архитектуры  сверхдлинного машинного слова (VLIW - Very Long Instruction Word) относятся к специфическим классам архитектур, прямо нацеленным на использование внутреннего параллелизма в алгоритмах (программах), причём параллелизм этот анализируется и планируется к рациональному использованию при вычислениях на программном уровне (используется идеологема EPIC - Explicitly Parallel Instruction Computing, явный параллелизм уровня машинных команд); при этом собственно аппаратная часть процессора освобождается от процедур распараллеливания  (и поэтому потенциально должна стать проще и экономичнее применяющих внутреннее распараллеливание), а степень реализации потенциала параллелизма благодаря использованию (более богатых) программных ресурсов должна повыситься.   В определённой степени VLIW-процессоры явились известной  реакцией на ста́вший безобразно длинным  конвейер в x86-серии процессорной архитектуры (хотя сам VLIW-подход конвейеризацию не отрицает).

VLIW-подход основан на идее загрузки во входной буфер процессора одновременно набора (bundle) допускающих параллельное выполнение  машинных команд и исполнения этого ряда команд аналогично единой команде в процессорах классической архитектуры. VLIW-процессоры реализуют параллелизм уровня ILP (Instruction-Level Parallelizm, параллелизм уровня машинных инструкций) и SMP (Symmetric MultiProcessing, системы с общей памятью)   идеологему работы с оперативной памятью. В рамках обеспечения импортонезависимости России разрабатываются процессоры ЭЛЬБРУС c VLIW-архитектурой (http://www.elbrus.ru/elbrus_arch), области применения которых - государственные и оборонные структуры, высокопроизводительные вычислительные системы (суперкомпьютеры).

Несмотря на выпуклое преимущество (программным путём дешевле реализовать сложные процедуры параллелизации), работа VLIW-процессоров сопряжена с известными проблемами. Среди них выделяют:

  • статичность полученных планов параллельного выполнения (с точки зрения автора недостатком не является, ибо преимущества в качестве программного распараллеливания с лихвой компенсируют эту особенность),

  • проблемы с излишней неравномерностью времени до́ступа к оперативной памяти разных вычислительных ядер   (временна́я антиплотность кода,   следствием является резкое снижение производительности из-за неизбежности  определения время выполнения всей связки команд сверхдлинного слова по продолжительности наиболее продолжительной из них), для компенсации этого предусматривается использование процессора в режиме DSP (Digital Signal Processor) при расположении обрабатываемых данных в одноуровневой оперативной памяти.

Первыми истинными VLIW-компьютерами стали мини-суперкомпьютеры, выпущенные в начале 1980 г. компаниями MultiFlow, Culler и Cydrome (США). К первым VLIW-процессорам относят TriMedia (Нидерланды) и DSP C6000 (США), такую архитектуру имеют многоядерные процессоры фирмы Tilera Corp. Известны VLIW-процессоры Сrusoe, Efficeon  (США),  Itanium (США), Эльбрус (Россия). В настоящее время VLIW-подход широко применяется в рыночном сегменте устройств класса DSP (Digital Signal Processor) для смартфонов, систем управления автомобилями, носи́мых устройствах иных мобильных систем и в компонентах сетей сотовой связи (напр., процессоры Snapgragon Hexagon QDSP6 компании Qualcomm, Inc.).

Т.к. аппаратно во VLIW-архитектуре уже заложена линейка отдельных вычислительных ядер соответственно каждому слоту сверхдлинного слова, важным требованием является задача максимальной загрузки вычислительной аппаратуры (этих ядер). Есть данные, что одной из серьёзных проблем Itanium'а явилась как раз неприемлемо малая загрузка аппаратуры при некоторых типах алгоритмов.

Автор считает важнейшим для совершения вычислительных практик изучение свойств алгоритмов; влияние аппаратных реализаций вычислительных систем на развитие методов обработки данных при этом признаётся, но расценивается подчинённым. В данной работе главе́нствующим принято направления изучения свойств алгоритмов [1] и исследуются пределы использования свойства внутреннего (скрытого) их параллелизма, которые реально получить в ходе разработки планов параллельного выполнения алгоритмов (программ)  согласно предлагаемой методике. Данные базируются на основе экспериментов, проведённых лично автором публикации в период 2018÷2023 г.г. при работе со студентами РТУ МИРЭА и НИУ ВШЭ (занятия с бакалаврами, магистрами, научно-исследовательский семинар студентов) и изложенными в книге [2].

Исследовательским инструментом являлась программная ПЛАТФОРМА DF-SPF [3], специально разработанная для данных целей и схематично показанная на рис. 1.

Рисунок 1. Общая схема взаимодействия компонентов инструментального программного комплекса для исследования внутреннего параллелизма в алгоритмах (программах) и построения  рациональных планов параллельного выполнения программ
Рисунок 1. Общая схема взаимодействия компонентов инструментального программного комплекса для исследования внутреннего параллелизма в алгоритмах (программах) и построения  рациональных планов параллельного выполнения программ

На вход программной системы  поступает описание анализируемого алгоритма  в императивном виде в форме ассемблероподобного языка   или формального его описания  в виде ориентированного ациклического Информационного Графа Алгоритма (далее ИГА) - зависимость вида “операторы → операнды”, при этом вершины графа ассоциируются с операторами (группами операторов) программы, а дуги – с линиями передачи данных, определяющими причинно-следственные зависимости между операторами.

Исходной информацией для анализа является алгоритм, описанный в императивном стиле  на ассемблероподобном языке и с отсутствием явных  указаний  последовательности выполнения операторов; архитектурная модель SMP (Symmetric Multi Processing). Фактически модель D-F представляет симулятор граф-машины с сохранением принципа единократного присваивания и возможностью контроля интенсивностью вычислений путём управления дисциплиной выборки готовых к выполнению команд на поле параллельных вычислителей.

Выявление и анализ внутреннего логического параллелизма в алгоритмах реализовано с использованием агентной модели  (модуль D-F)  и  универсального анализатора/преобразователя алгоритмов в форме информационных графов (модуль SPF@home). Неотъемлемой частью функционала модуля SPF@home является блок построения специальных сечений ИГА в виде его Ярусно-Параллельной Формы  (далее ЯПФ), хотя реализованный языковыми средствами API (Application Programing Interface, интерфейс программирования приложения) потенциально дает возможность осуществить любой произвольный метод анализа и преобразований алгоритмов (напр., представляет интерес анализ частоты возникновения в конкретных алгоритмах пресловутых цу́гов (цепочек команд) Бабаяна-Волконского, [4]).

Оба упомянутых модуля разработаны с использованием языка C/C++ в стиле GUI для модели Win’32,  являются полностью OpenSource и могут быть выгружены для свободного использования (формат инсталляционных файлов; http://vbakanov.ru/dataflow/content/install_df.exehttp://vbakanov.ru/spf@home/content/install_spf.exe, зеркала́ https://cloud.mail.ru/public/EdpR/1ghUN568p и https://cloud.mail.ru/public/9tKJ/YFnPni4aU соответственно).  Вычислительные эксперименты проводились над набором оформленных в виде библиотеки  программ (алгоритмов), реализующих наиболее часто применяющиеся алгоритмы (напр., линейной алгебры; библиотека может неограниченно расширяться усилиями участников исследований). Условность выполнения операторов реализуется предика́тным методом (что позволяет избежать мультивариантности ЯПФ),  программные циклы перед выполнением разворачивались (“unrolling”) с использованием макросов.

При этом совершенно естественным является метод представления каждого слота сверхдлинного командного слова соответствующим сечением  ИГА с выполнением последовательно по ярусам с начала до конца программы. Для получения рациональных (разумных, стремящихся к оптимальным вследствие NP-полноты задачи, [5]) являются целенаправленные эквивалентные (не нарушающие информационных связей в алгоритме) преобразования ЯПФ, описываемые с использованием скриптового языка Lua [6]. Основой создания этих сценариев является эвристический подход совместно с итерационным методом движения в сторону повышения качества разрабатываемых планов параллельного выполнения программ.

Предложено большое количество подходов к проблеме построения рациональных планов (расписаний) параллельного выполнения алгоритмов (и созданных на их основе программ); часть из них являются теоретическими и вряд ли когда-либо будут реализованы. Методологически автор данного исследования считает важным выбор соотношения между достаточно быстрой вычислительной процедурой (трудоёмкостью O(N2), где N - число вершин в ИГА) специального деле́ния графа и ювелирно выполняющейся основанной на использовании Lua-эвристик частью общей задачи. С точки зрения автора, при таком разделении труда (суперпозиция формальной и эвристической компонент) достигается бо́льшая эффективность по сравнению с приёмом, когда выборка каждого оператора начинается с “чистого листа”. Определённым недостатком конкретной реализации метода является ограниченность величин исследуемых данных (т.к. ИГА является параметризованным по размеру данных).

Дополнительным преимуществом подхода с использование ЯПФ является возможность поэтапного (с разбиением полного ИГА данного приложения на последовательные блоки) анализа (хотя и с некоторой потерей общей действенности метода). При этом первыми претендентами на локальное распараллеливание являются библиотечные процедуры.

Усреднённая степень использования параллельных вычислительных ресурсов  оценивалась пространственной плотностью кода (рис. 2).

Рисунок 2. К определению пространственной плотности кода
Рисунок 2. К определению пространственной плотности кода

Для практического применения характеристику плотность кода (один из близких аналогов - коэффициент полезного действия) удобно оценивать коэффициентом использования параллельных вычислителей (считая общее число таких вычислителей равным ширине ЯПФ); незагру́женные полезными действиями вычислители обычно выполняют “команду-пустышку” NOP (нет операции) :

kи = ∑Wi / (W×H) = M / (W×H) ,

где Wi – ширина i-того яруса ЯПФ (здесь ∑Wi=M - число операций в рассматриваемом алгоритме, W=max⁡(Wi), H – число ярусов ЯПФ). При полной загрузке всех вычислителей в течение всего времени выполнения алгоритма (программы) имеем kи≡1 (напр., вариант полностью последовательного выполнения); неслучайному достижению kи=1 в случае параллельного выполнения активно препятствуют информационные (причинно-следственные) связи типа “операторы операнды”.

Основными характеристиками эффективности полученных планов считались следующие:

  • пространственная плотность кода - уровень загрузки вычислительных ядер VLIW-процессора (аналогично коэффициенту полезного действия в термомеханических системах) - коэффициент использования параллельных вычислителей kи,

  • вычислительная сложность целенаправленного преобразования ЯПФ – число элементарных шагов преобразования (в качестве меры выбрано число перемещений операторов с яруса на ярус ЯПФ).

 Дополнительно анализировалась полученная в результате преобразования высота ЯПФ (параллельная вычислительная сложность) – оценка  времени выполнения алгоритма (программы). Также (в первом приближении) не рассматривались вопросы размещения данных в многоуровневой памяти (определение параметров временно́й плотности кода - ближайшая задача исследования).

Как сказано, неявно ставилась задача определения максимальных степеней распараллеливания, реализуемых для VLIW-процессоров (памяту́я об одной из упомянутых проблем Itanium’а). Результаты вычислительных экспериментов по целенаправленному преобразованию ЯПФ представлены на риc. 3÷5.

Рисунок 3. Алгоритм m_matr_10.set умножения квадратных матриц 10 порядка классическим методом, оси абсцисс – ширина ЯПФ после оной преобразования (фактически размер слота сверхдлинного машинного слова): a) – параллельная вычислительная  сложность  (высота ЯПФ), b) – вычислительная сложность преобразования ЯПФ (в единицах перемещений операторов с яруса на ярус), с) – плотность кода (в единицах kи); 1 – эвристика (метод преобразования) WithByWith, 2 – эвристика Dithotomy, 3 – аппаратное распараллеливание в симуляторе пото́кового (Data-Flow) вычислителя (приводится для сравнения)
Рисунок 3. Алгоритм m_matr_10.set умножения квадратных матриц 10 порядка классическим методом, оси абсцисс – ширина ЯПФ после оной преобразования (фактически размер слота сверхдлинного машинного слова):
a) – параллельная вычислительная сложность (высота ЯПФ), b) – вычислительная сложность преобразования ЯПФ (в единицах перемещений операторов с яруса на ярус), с) – плотность кода (в единицах kи);
1 – эвристика (метод преобразования) WithByWith, 2 – эвристика Dithotomy, 3 – аппаратное распараллеливание в симуляторе пото́кового (Data-Flow) вычислителя (приводится для сравнения)
Рисунок 4. Алгоритм slau_10.set решения системы линейных алгебраических уравнений 10 порядка классическим безитерационным методом последовательного исключения Гаусса
Рисунок 4. Алгоритм slau_10.set решения системы линейных алгебраических уравнений 10 порядка классическим безитерационным методом последовательного исключения Гаусса
Рисунок 5. Искусственно сгенерированный ИГА алгоритма e17039_o9853_t199.gv
Рисунок 5. Искусственно сгенерированный ИГА алгоритма e17039_o9853_t199.gv

В ходе исследований были предложены две  эвристики преобразования ЯПФ (WithByWith и Dichotomy), обладающие - одна повышенным качеством получаемых планов при повышенной же вычислительной трудоёмкости реализации, другая – наоборот (потенциальные кандидаты на разную степень оптимизации). В целом показано, что для VLIW-процессоров с размером слота сверхдлинного слова в 4÷16 команд плотность кода изменяется в достаточно широком диапазоне (может доходить до 0,6÷1,0 с продолжающимся падением при дальнейшим росте слота) и повышается с увеличением размеров обрабатываемых данных (исследовались алгоритмы линейной алгебры с порядком матриц 10  и один искусственно сгенерированный алгоритм). При этом в случае применения эвристики  WithByWith высота ЯПФ (параллельная вычислительная сложность) всё же незначительно меньше, чем в случае применения Dichotomy. Причудливая  форма кривых в начальной части  рис. 3 c) являются следствием противоречивых процессов, происходящих при целенаправленном изменения ЯПФ.

В целом стартующие от  0,8 значения плотности кода нельзя признать полностью удовлетворительным (вследствие его ма́лости). “Светом в конце тоннеля” может являться:

  • факт улучшения качества получаемых планов параллельного выполнения программ с возрастанием размеров обрабатываемых данных (с ростом порядка матриц резко возрастает число степеней свободы в расположении операторов по ярусам ЯПФ),

  • улучшение качества эвристик (автор ни в коей степени не считает, что достигнут оптимум при движении в этом направлении).

На рис. 6 приведены линейчатые т.н. TLD (Temporary Local Data) диаграммы распределения размеров временных локальных данных. Размер данных определяется в единицах некоторых обобщённых величин, для определения реальных размеров данных (напр., в байтах) используется информация из пула мер линий передачи данных.

Рисунок 6. TLD-диаграммы  для алгоритмов (программ): a) - умножения  квадратных матриц 10-го порядка классическим методом, b) - решения системы линейных алгебраических уравнений 10-го порядка классическим безитерационным методом последовательного исключения Гаусса,  c) - построенная по искусственно сгенерированному ИГА алгоритма e17039_o9853_t199.gv
Рисунок 6. TLD-диаграммы для алгоритмов (программ): a) - умножения квадратных
матриц 10-го порядка классическим методом, b) - решения системы линейных
алгебраических уравнений 10-го порядка классическим безитерационным
методом последовательного исключения Гаусса, c) - построенная по
искусственно сгенерированному ИГА алгоритма e17039_o9853_t199.gv

На рис. 6 три слева направо в ряд расположенных тройки линейчатых диаграмм) фиксируют исходное состояние (напр., W=1000), некоторое промежуточное состояние (W=64 или W=32) и режим последовательного выполнения (W=1) для конкретного алгоритма; через HTLD и  WTLD обозначены высота и ширина TLD по ярусам ЯПФ.  Видно большое разнообразие в распределении TLD-данных по ходу выполнения алгоритма (для упрощения сравнения высо́ты графиков одинаково масштабированы).

Рисунок 7. Максимальный размер  TLD-данных в зависимости от  порядка умножаемых матриц (обозначения на рисунке: 2÷10 – порядок матриц, 0 – огибающая, результирующая зависимость)
Рисунок 7. Максимальный размер TLD-данных в зависимости от порядка умножаемых матриц (обозначения на рисунке: 2÷10 – порядок
матриц, 0 – огибающая, результирующая зависимость)

На рис. 7 представлен размер TLD-данных для различных степеней “ужа́тия” по ширине (ось абсцисс) ленточной диаграммы алгоритма умножения квадратных матриц 10-го порядка с иллюстрацией расположения максимума TLD-диаграмм вдоль этой оси (можно утверждать, что экстремумы практически постоянны).

Дополнительным полезным свойством системы SPF@home является возможность выявления  претендентов на расположение в процессорном кэше (насколько правомочно говорить об этом в применении к схеме единократного выполнения операторов).

Обладающее перспективой является замеченное явление разницы между “верхним” и “нижним” ЯПФ. Оба варианта получения ЯПФ  (в первом случае все операторы максимально "прижа́ты" к началу программы, во втором - к концу оной; назовём их ЯПФ(в) и ЯПФ(н) соответственно) требуют одинаковой вычислительной сложности при получении, но параметры их сильно отличаются (рис. 8÷9).

Рисунок 8. Диаграммы интенсивности вычислений для алгоритма умножения  матриц различного порядка N традиционным способом
Рисунок 8. Диаграммы интенсивности вычислений для алгоритма умножения матриц различного порядка N традиционным способом

Как видно из рис. 8÷9, характер диаграмм интенсивности вычислений для ЯПФ(в) сохраняется; в случае использования   ЯПФ(н) имеется явная тенденция к смещению максимума диаграмм ЯПФ к конечной части диаграммы (да и собственно неравномерности распределения  – что хорошо видно по расположению пунктирной прямой, показывающей среднеарифметическое значение ординат кривой интенсивности вычислений). А раз вычислительная трудоёмкость получения ЯПФ(в) и ЯПФ(н) одинакова, есть резон начинать процесс целенаправленной модификации  с состояния именно ЯПФ(н), при этом основным направлением переноса  операторов будет “снизу вверх”.

Рисунок 9. Диаграммы интенсивности вычислений для алгоритма  решения систем линейных алгебраических уравнений (СЛАУ) порядка N безитерационным методом последовательного исключения Гаусса
Рисунок 9. Диаграммы интенсивности вычислений для алгоритма решения систем линейных алгебраических уравнений (СЛАУ) порядка
N безитерационным методом последовательного исключения Гаусса

Обосновать (возможные) преимущества использования ЯПФ(н) при построении рациональных планов выполнения параллельных программ – задача Исследователя (возможно, из лица Читателей)..! В дальнейшем ничто не препятствует Исследователю обратиться к  более изощрённым методам построения планов параллельного выполнения программ (см., напр., здесь: https://www.ispras.ru/dcouncil/docs/diss/2021/chernyh/chernyh.php?sphrase_id=5604670).

Нельзя считать невозможными дальнейшие усовершенствования эвристических методов целенаправленного преобразования ЯПФ как каркасов планов параллельного выполнения алгоритмов (программ). 

Факт, что требование синхронизации по моменту старта одновременного всех операторов сверхдлинного слова для VLIW-архитектуры сильно ограничивает степени свободы при попытках достижения максимальной временно́й плотности кода. Вопрос о достижимости указанных показателей (в первую очередь плотности кода) вследствие труднопредсказуемых ограничений при схемотехнической реализации не может быть решен однозначно, однако  на приведенные величины можно опираться. Эксплуатирующиеся во многих учебных заведениях системы симуляции вычислений (SIMICS, сети Петри) имеют дело не с алгоритмом, а с исполняемым кодом программы (что ценно, но избыточно и трудно варьируемо на этапе анализа именно алгоритмов как истинного “топлива для вычислений”).

Дальнейшие методы повышения степени использования поля параллельных вычислителей в случае выполнения  алгоритмов с ограниченным потенциалом параллелизма  (напр., разделение параллельного вычислительного поля несколькими приложениями одновременно) не анализировались вследствие требуемого излишнего  усложнения планировщика задач местной операционной системы.

В принципе, отдельные параллельно функционирующие вычислительные ядра (соответствующие конкретному слоту в сверхдлинном слове), не обязательно должны быть гомогенными. Для этого случая в API системы SPF предусмотрен вариант создания в пределах каждого яруса ЯПФ нескольких подъярусов, соответствующих заданным мерам вершин и дуг (принципиально сходного эффекта можно ожидать от применения дополнительных фильтров при сечении ИГА на ярусы).

Целевыми потребителями разработанных методов генерации расписаний параллельного выполнения программ в первую очередь являются разработчики трансляторов и виртуальных машин, исследователи свойств алгоритмов (в направлении нахождения и рационального использования потенциала скрытого их параллелизма).  Информационный граф алгоритма без труда восстанавливается на основе анализа причинно-следственных связей в программе после завершения работы компилятора; при этом логично библиотечные процедуры обрабатывать (компоновать) отдельно,  используя имеющиеся наработки.

Исследовательская ПЛАТФОРМА DF-SPF и разработанные с её помощью методики (приёмы выявления скрытого параллелизма и его параметров в произвольных алгоритмах, способы построения рациональных планов  выполнения параллельных программ на заданном поле вычислителей) ряд лет применяются при обучении студентов в указанных университетах России и позволили повысить компетенции учащихся в  области теории и практики параллельной обработки данных.

Список литературы

1. AlgoWiki. Открытая энциклопедия свойств алгоритмов. Под ред.: Воеводин В., Донгарра Дж.  URL: http://algowiki-project.org (дата обращения: 10.02.2024).

2. Баканов В.М. Практический анализ алгоритмов и эффективность параллельных вычислений. — М.: Пробел-2000, 2023. — 198 с. (https://www.litres.ru/book/v-m-bakanov/prakticheskiy-analiz-algoritmov-i-effektivnost-parallelnyh-vyc-70184365/).

3. V.M.Bakanov.  Software complex for modeling and optimization of program implementation on parallel calculation systems. Open Computer Science, 2018, 8, Issue 1, Pages 228÷234, DOI: https://www.degruyter.com/document/doi/10.1515/comp-2018-0019/html

4. Железо на службе у алгоритма (продолжение). Борис Бабаян о прошлом, настоящем и будущем вычислительной техники. URL: https://habr.com/ru/articles/214377/ (дата обращения: 30.03.2024).

5. М.Гэри, Д.Джонсон.  Вычислительные машины и труднорешаемые задачи. — М.: Мир, 1982. — 416 с.

6. Иерузалимски Роберту. Программирование на языке Lua.  — М.: ДМК Пресс, 2014. — 382 c.


Предыдущие публикации на тему исследования параметров функционирования вычислительных систем методами математического моделирования:

Tags:
Hubs:
Total votes 11: ↑10 and ↓1+12
Comments27

Articles