ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 31
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Вычислительные системы «ЭЛЬБРУС»
Методические указания
Список лабораторных работ:
1.
Развёртывание среды двоичной трансляции
2.
Интегрированные среды разработки ПО
3.
Получение исполняемого файла для платформы "Эльбрус"
4.
Средства построения графических приложений
5. …
Лабораторная работа №1.
Развёртывание среды двоичной трансляции
Цель работы – изучение программного пакета rtc и приобретение навыков по запуску x86- приложений на целевой архитектуре «Эльбрус».
Техника двоичной трансляции сводится к преобразованию двоичных кодов исходной архитектуры в функционально эквивалентные последовательности кодов целевой архитектуры, впоследствии исполняемые на аппаратуре целевой платформы.
В микропроцессорах с архитектурой «Эльбрус» технология динамической компиляции и оптимизации направлена на обеспечение полной двоичной совместимости с приложениями и операционными системами с архитектурой Intel x86 и x86-64, а также двоичной совместимости на уровне приложений под управлением операционной системы «Эльбрус Линукс» x86-
64. А благодаря тому, что в архитектуру «Эльбрус» изначально заложена аппаратная поддержка трансляции, накладные расходы получаются небольшими.
Представленное на платформе решение работает в двух режимах: как бинарный транслятор уровня системы, когда можно установить и запустить целую ОС, и как бинарный транслятор уровня приложений. Первый режим реализован пакетом lintel, а второй – rtc и работает под управлением уже запущенной операционной системы.
Использование rtc предполагает следующие составные части:
• хост (основная операционная система) – операционная система, под которой запускается транслятор, содержащая в отдельном каталоге образ гостевой системы.
• гость (гостевой образ) – операционное окружение, файловая система которого (в виде подкаталога в файловой системе хоста) имеет
архитектуру x86 или x86-64. Ядро не требуется, что несколько роднит данный режим с контейнерами.
В качестве штатной гостевой файловой системы используется файловая система ОС «Эльбрус Линукс» x86-64. Использование других гостевых файловых систем допускается, однако следует учитывает следующие моменты:
• в качестве гостевого образа рекомендуется использовать сборку с аналогичной версией ядра Linux.
• наличие ограничений, обусловленных архитектурой, например отсутствие поддержки виртуализации на процессорах «Эльбрус» с версией архитектуры ниже 6 или отсутствие поддержки AVX- инструкций и др.
Задание:
1)
Выбрать х86- программу для запуска в режиме двоичной трансляции.
2)
Выбрать гостевую ОС
3)
Подготовить гостевую файловую систему по руководству из учебного пособия
[
1
]
4)
Развернуть гостевую файловую систему на ВК «Эльбрус»
5)
Произвести запуск ранее выбранной программы
6)
Подготовить отчёт по ЛР
Бинарный компилятор уровня приложений (RTC) оформлен в виде пакета, входящего в состав общего программного обеспечения для операционной системы ОС «Эльбрус Линукс». При установке бинарный компилятор вместе с набором вспомогательных утилит и скриптов на языке bash размещается в файловой системе – в директории /opt/mcst/rtc.
Перед первым запуском компилятора уровня приложений необходимо произвести подготовку гостевой файловой системы, а также при
В качестве штатной гостевой файловой системы используется файловая система ОС «Эльбрус Линукс» x86-64. Использование других гостевых файловых систем допускается, однако следует учитывает следующие моменты:
• в качестве гостевого образа рекомендуется использовать сборку с аналогичной версией ядра Linux.
• наличие ограничений, обусловленных архитектурой, например отсутствие поддержки виртуализации на процессорах «Эльбрус» с версией архитектуры ниже 6 или отсутствие поддержки AVX- инструкций и др.
Задание:
1)
Выбрать х86- программу для запуска в режиме двоичной трансляции.
2)
Выбрать гостевую ОС
3)
Подготовить гостевую файловую систему по руководству из учебного пособия
[
1
]
4)
Развернуть гостевую файловую систему на ВК «Эльбрус»
5)
Произвести запуск ранее выбранной программы
6)
Подготовить отчёт по ЛР
Бинарный компилятор уровня приложений (RTC) оформлен в виде пакета, входящего в состав общего программного обеспечения для операционной системы ОС «Эльбрус Линукс». При установке бинарный компилятор вместе с набором вспомогательных утилит и скриптов на языке bash размещается в файловой системе – в директории /opt/mcst/rtc.
Перед первым запуском компилятора уровня приложений необходимо произвести подготовку гостевой файловой системы, а также при
необходимости её сконфигурировать. Создание пользовательской гостевой файловой системы предлагается производить на работающей операционной системе, чью файловую систему предполагается использовать для работы бинарного компилятора. В режиме суперпользователя необходимо запустить скрипт pack_guestfs.sh. Скрипту доступно несколько опций, основными среди них являются:
--include
– включить указанный файл/директорию в создаваемый образ гостевой файловой системы;
--exclude
– исключить указанный файл/директорию из создаваемого образа гостевой файловой системы.
Результатом работы скрипта pack_guestfs.sh будет создание в текущей директории архива guestfs.tgz. Созданный архив гостевой файловой системы необходимо перенести на вычислительный комплекс под управлением процессора на архитектуре «Эльбрус», и распаковать при помощи скрипта
unpack_guestfs.sh
, расположенного в директории /opt/mcst/rtc/bin, в режиме суперпользователя. Скрипту доступно несколько опций, основными из которых являются:
--root
– распаковать гостевую файловую систему в указанную директорию;
--delete
– удалить архив с гостевой файловой системой при успешном завершении работы скрипта.
Подготовка гостевой файловой системы позволяет создать в её корневой директории стандартное средство запуска бинарного компилятора уровня приложений – скрипт run_shell.sh, с помощью скрипта init_guestfs.sh.
Данное действие производится в режиме суперпользователя при помощи команды:
$ /opt/mcst/rtc/bin/init_guestfs.sh.
Скрипту доступно несколько опций, основными из которых являются:
--include
– включить указанный файл/директорию в создаваемый образ гостевой файловой системы;
--exclude
– исключить указанный файл/директорию из создаваемого образа гостевой файловой системы.
Результатом работы скрипта pack_guestfs.sh будет создание в текущей директории архива guestfs.tgz. Созданный архив гостевой файловой системы необходимо перенести на вычислительный комплекс под управлением процессора на архитектуре «Эльбрус», и распаковать при помощи скрипта
unpack_guestfs.sh
, расположенного в директории /opt/mcst/rtc/bin, в режиме суперпользователя. Скрипту доступно несколько опций, основными из которых являются:
--root
– распаковать гостевую файловую систему в указанную директорию;
--delete
– удалить архив с гостевой файловой системой при успешном завершении работы скрипта.
Подготовка гостевой файловой системы позволяет создать в её корневой директории стандартное средство запуска бинарного компилятора уровня приложений – скрипт run_shell.sh, с помощью скрипта init_guestfs.sh.
Данное действие производится в режиме суперпользователя при помощи команды:
$ /opt/mcst/rtc/bin/init_guestfs.sh.
Скрипту доступно несколько опций, основными из которых являются:
--root
– определить указанную директорию в качестве корня гостевой файловой системы (по умолчанию в /export/rtc);
--shell
– использовать указанный гостевой командный интерпретатор (по умолчанию /bin/bash).
Основной вариант запуска бинарного компилятора уровня приложений осуществляется при помощи скрипта run_shell.sh. Пользователь может либо перейти в режим командной строки, запустив указанный скрипт без опций:
$ /export/rtc/run_shell.sh
, либо по опции --execute указать явно какое приложение в кодах исходной платформы необходимо запустить, например:
$ /export/rtc/run_shell.sh --execute
/путь/к/приложению, где путь к приложению, скрипту или команда указывается относительно гостевой файловой системы.
Лабораторная работа №2.
Интегрированные среды разработки ПО
Цель работы – изучение интегрированных сред разработки ПО, доступных в ОС «Эльбрус-Линукс» для архитектуры «Эльбрус».
В составе дистрибутива «Эльбрус Линукс» версии 6.0.1:
•
Компилятор lcc (Elbrus C Compiler) версии 1.25.19 совместимый с gcc
7.3.0, llvm – в разработке;
•
Средства сборки:
make
4.2.1,
automake
1.16.2,
cmake 3.15.4, pmake 2.1.35, apache maven 3.6.3
(для Java),
Mono 5.16
(в 2022 обновление до 6.12);
•
Графические среды разработки ПО: anjuta 3.34, code::blocks 17.12 и qt-
creator 4.8.2 (qt4 + qt5);
•
Системы контроля версий: git 2.28 и др.
•
Другое ПО: LibreOffice 6.3, openSSL 1.1.1h, openJDK8 и openJDK11,
.NET Core 3.1.8
В качестве задания предлагается практическое изучение пакетов Anjuta,
CodeBlock, Eclipse или Qt Creator на выбор студента.
Anjuta — официальная интегрированная среда разработки GNOME для языков Си, C++, Vala, Java, JavaScript, Python, особенно хорошо подходит для разработки графических программ. Одним из самых мощных инструментов в
Anjuta является менеджер проекта. Он не только может открывать почти все проекты, основанные на Automake и Autoconf; он не добавляет никакой
информации, связанной с Anjuta, так что ваш проект также может обслуживаться и разрабатываться вне Anjuta.
Eclipse — свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse
Foundation. Eclipse написана на Java, потому является платформо- независимым продуктом.
Code::Blocks — свободная кроссплатформенная среда разработки.
Code::Blocks написана на C++ и использует библиотеку wxWidgets. Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей. Поддерживает языки программирования Си, C++, D, Fortran.
Qt Creator — кроссплатформенная свободная IDE для разработки на Си,
C++, JavaScript и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML.
Eclipse — свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse
Foundation. Eclipse написана на Java, потому является платформо- независимым продуктом.
Code::Blocks — свободная кроссплатформенная среда разработки.
Code::Blocks написана на C++ и использует библиотеку wxWidgets. Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей. Поддерживает языки программирования Си, C++, D, Fortran.
Qt Creator — кроссплатформенная свободная IDE для разработки на Си,
C++, JavaScript и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML.
Лабораторная работа №3.
Получение исполняемого файла для платформы "Эльбрус"
Цель работы – Ознакомление с компилятором LCC. Получение исполняемого файла для платформы «Эльбрус». Ознакомление со структурой широких команд.
Порядок выполнения:
• составить программу на языке с/с++ по заданному варианту для целочисленных и вещественных значений;
• составить Makefile для компилирования в объектный файл, получения исполняемого файла и ассемблерного, очистки и удаления;
• скомпилировать для платформ «Эльбрус» и x86-64;
• оценить время сборки и исполнения при различных параметрах сборки;
• для варианта с оптимальным временем исполнения провести измерения исполнения для вещественных и целочисленных значений матрицы с увеличенной размерностью (х10, х100, х1000).
Содержание отчёта: Титульный лист. Цель работы. Таблица с характеристиками используемых выч. комплексов (e2k и x86) и таблица с параметрами и временем сборки и исполнения. Краткий ассемблерый листинг одной из функций, демонстрирующий отличия и особенности систем. Листинг кода и Makefile. Скриншоты или результаты. Выводы.
Варианты заданий:
Вариант
Задание
1
Заполнение матрицы С по результатам сравнения элементов первых двух.
Матрицы А и В размером И х Ф. В матрицу С записываются большие элементы, если И>O, либо меньшие. Начальные значения задаются по формуле.
2
Сложение (С) и вычитание (D) матриц А и Б размером И х Ф; начальные значения вещественны и задаются по формуле.
3
Умножение матрицы А размером И х Ф на матрицу В размером Ф х О; начальные значения вещественны и задаются по формуле.
4
Умножение матрицы А размером Ф х И на матрицу В размером И х О. А[ij] =
(Ф*([i mod 2]-1) + О*([j mod 2]+1)) / И + random; B[ij]= (И*([i mod 2]+1) -
О*([j mod 2]-1)) / Ф + random.
Формула: А[ij] = (Ф*([i mod 2] +1) + О*([j mod 2]-1)) / И ;
B[ij]= (И*([i mod 2]-1) - О*([j mod 2]+1)) / Ф.
Количество знаков после запятой = Ф.
Ф, И, О – Фамилия, Имя и Отчество студента.
Лабораторная работа №4.
Средства построения графических приложений
Цель работы – ознакомление с основными свойствами и поддерживаемыми событиями стандартных компонентов, применяемых для создания интерфейсов при разработке графических приложений, с использованием кроссплатформенных библиотек доступных в ОС «Эльбрус-
Линукс».
Содержание отчёта: Титульный лист. Цель работы. Листинг кода.
Скриншоты и результаты. Выводы.
Основные графические библиотеки, доступные в ОС «Эльбрус-Линукс»:
• Qt – представляет собой целый набор инструментов для быстрого и удобного проектирования GUI, являясь также гибкой и кросс- платформенной. Qt расширяет C++ с помощью МОК (Мета-объектного компилятора) и предоставляет некоторые дополнительные функции.
• wxWidgets — одна из старейших, но в то же время наиболее известных графических библиотек для отрисовки GUI. Её основной плюс — производительность. Если QT использует низкоуровневый код лишь для таких элементов, как кнопки и полосы прокрутки, то wxWidgets для каждой системы свой, и благодаря этому все элементы отображаются максимально похожими на системный стиль.
• GTK+ — графический фреймворк, широко применяемый во многих системах. Изначально он задумывался как компонент GIMP, но за 20 лет после выпуска первой стабильной версии он нашёл применение в сотнях других приложений. Сейчас GTK+ — полноценный графический фреймворк, не уступающий QT.
• SDL — кроссплатформенная 2D-библиотека, предназначенная для написания приложений (в основном игр).
• Cairo — библиотека для отрисовки векторной графики. Также является частью GTK+.
Задание:
1)
Для задания из ЛР №3, либо по варианту составить макет пользовательского интерфейса
2)
Выполнить описание поставленной задачи и выбранного метода
(библиотеки) решения
3)
Разработать исполняемый модуль
4)
Разработать тестовые примеры
5)
Подготовить отчёт по ЛР
Варианты задания
[
2
]
:
1.
Умножение матриц
B
A
C
*
=
2.
Нахождение точек пересечения окружности и прямой линии.
3.
Решение квадратного уравнения
0 2
=
+
+
c
bx
ax
4.
Дальность полета и высота подъема тела при броске под углом.
5.
Умножение комплексных чисел
3 3
2 2
1 1
ib
a
ib
a
ib
a
+
=
+
+
+
6.
Нахождение точек пересечения двух окружностей.
7.
Решение системы вида
+
=
+
=
d
cx
y
b
x
a
y
8.
Нахождение точки пересечения двух прямых.
9.
Время движения тела при скольжении по наклонной плоскости.
10.
Нахождение точек пересечения овала и прямой линии.
11.
Нахождение обратного комплексного числа
2 2
b
a
ib
a
ib
a
+
−
=
+
12.
Суммарное сопротивление при различных соединениях.
13.
Скорости тел после соударения (абсолютно упругий и неупругий удары).
14.
Решение системы из двух линейных уравнений
=
+
=
+
2 22 21 1
12 11
b
y
a
x
a
b
y
a
x
a
15.
Расчет кпд кипятильника.
16.
Нахождение точек пересечения гиперболы и прямой линии.
17.
Суммарная емкость при различных соединениях.
18.
Сложение матриц
B
A
C
+
=
19.
Объем, давление и температура при различных термодинамических процессах
20.
Нагревание и охлаждение, включая плавление и парообразование тел с учетом теплоемкости.
Используемая библиотека
№ по списку группы
QT
1, 19 4
7 10 13 16
GTK+
2, 20 5
8 11 14 17 wxWidgets
3 6
9 12 15 18
При большом объеме входных и выходных данных необходимо предусмотреть возможность их ввода из файла, редактирования и вывода в файл.
Лабораторная работа №5.
Оптимизация вычислений
Разработка многопоточных приложений
Elbrus Math Library (EML)
…
Будет дополнено позже
Источники
1.
Белов К.А., Горелик Д. В., Гордеев А.В. Вычислительные системы
«ЭЛЬБРУС». Учебное пособие 2021 г.
2.
Попов В.П., Соловьёв Н.В. Человеко-машинный интерфейс.
Методические указания 2007 г.
Рекомендуемая литература
1.
Руководство по эффективному программированию на платформе
«Эльбрус» — Нейман-заде М. И., Королёв С. Д. — 2020 2.
Микропроцессоры и вычислительные комплексы семейства
«Эльбрус» — Ким А. К., Перекатов В. И., Ермаков С. Г. — СПб.: Питер,
2013 — 272 с.