Лабораторная работаПараллельное программированиеГод: 2024ПГНИУ: Пермский государственный национальный исследовательский университет
👁 14💼 0

Готовая лабораторная работа: Работа на суперкомпьютере

Загружена: 23.02.2026 12:16

Практическое руководство по подключению и использованию суперкомпьютера: SSH/VPN, генерация ключей, графический доступ. Описаны компиляция и запуск программ с OpenMP, MPI и CUDA, приведены примеры тестов производительности — полезно для освоения параллельного программирования.

Содержание

Лабораторная работа № 1 по дисциплине «Параллельные вычислительные системы»

Тема: Основы работы на суперкомпьютере («ПГНИУ-Кеплер») и настройка среды программирования

Введение

В эпоху стремительного развития информационных технологий и увеличения объёмов обрабатываемых данных, суперкомпьютеры становятся неотъемлемой частью научных исследований, инженерных разработок и анализа больших данных. Суперкомпьютер «Пермский государственный национальный исследовательский университет-Кеплер» представляет собой высокопроизводительную вычислительную систему, предназначенную для решения сложных вычислительных задач в различных областях науки и техники.

Лабораторная работа №1 направлена на ознакомление студентов с основами работы на суперкомпьютере «ПГНИУ-Кеплер», а также с настройкой и использованием среды программирования для компиляции и запуска программ. В ходе выполнения лабораторной работы студенты приобретут практические навыки удалённого подключения к суперкомпьютеру, управления операционной системой Linux в консольном и графическом режимах, а также компиляции и выполнения различных типов программных заданий.

Постановка задачи

Целью лабораторной работы №1 «Основы работы на суперкомпьютере («ПГНИУ-Кеплер») и настройка среды программирования» является приобретение знаний, умений и навыков, необходимых для успешной работы на суперкомпьютере «ПГНИУ-Кеплер» и в среде программирования ПК по параллельному программированию. Для достижения поставленной цели необходимо решение следующих основных задач:

Изучить и освоить регламенты и правила, необходимые для получения доступа к суперкомпьютеру «ПГНИУ-Кеплер» и эффективного его использования.

Изучить основные способы подключения к суперкомпьютеру и примеры используемого для этого программного обеспечения.

Освоить навыки подключения к суперкомпьютеру и удалённого управления операционной системой Linux:

3.1. Подключение в консольном режиме.

3.2. Подключение в графическом режиме.

Изучить виды классификаций архитектур суперкомпьютеров и научиться классифицировать ресурсы суперкомпьютера «ПГНИУ-Кеплер» по минимум трём различным критериям.

Освоить процессы компиляции программ на суперкомпьютере «ПГНИУ-Кеплер»:

5.1. Компиляция последовательных программ.

5.2. Компиляция многопоточных программ с использованием OpenMP.

Освоить навыки запуска программных заданий на вычислительных узлах суперкомпьютера «ПГНИУ-Кеплер» для разных типов программ:

6.1. Запуск последовательных программ.

6.2. Запуск многопоточных программ (OpenMP).

6.3. Запуск многозадачных программ (MPI).

6.4. Запуск гибридных программ для GPU (CUDA).

Освоить навыки написания параллельных программ в среде программирования на ПК (ноутбуке) для организации параллельных вычислений:

7.1. Разработка OpenMP-программ.

7.2. Разработка MPI-программ.

7.3. Разработка CUDA-программ для GPU.

В процессе выполнения лабораторной работы студенты познакомятся с архитектурой суперкомпьютера «ПГНИУ-Кеплер», научатся эффективно подключаться к системе, компилировать и запускать различные типы программ, а также оптимизировать свои вычислительные задачи для достижения максимальной производительности.

Задания к лабораторной работе

Ознакомиться с регламентами и правилами доступа к суперкомпьютеру «ПГНИУ-Кеплер».

Изучить основные методы подключения к суперкомпьютеру и используемое программное обеспечение.

Выполнить подключение к суперкомпьютеру:

в консольном режиме с использованием SSH;

в графическом режиме (например, через X2go или VNC).

Сгенерировать SSH-ключи для безопасного подключения (например, с помощью PuttyKeyGen).

Изучить архитектуру суперкомпьютера «ПГНИУ-Кеплер»:

определить количество процессоров, видеопроцессоров, оперативной памяти;

описать системную, сервисную и управляющую сети;

охарактеризовать систему хранения данных.

Выполнить компиляцию программ на суперкомпьютере:

последовательной программы;

многопоточной программы с OpenMP;

многозадачной программы с MPI;

гибридной программы для GPU (CUDA).

Выполнить компиляцию аналогичных программ в локальной среде разработки (на ПК или ноутбуке).

Составить отчёт о выполнении лабораторной работы, включив в него описание всех этапов, скриншоты и выводы.

Лабораторная работа № 2 по дисциплине «Параллельные вычислительные системы»

Тема: Введение в OpenMP. Операции с массивами. Быстрая сортировка

Введение

В современных вычислительных системах увеличение объёмов обрабатываемых данных и усложнение задач требует применения эффективных методов параллельного программирования. Одним из таких методов является использование библиотеки OpenMP, которая позволяет легко внедрять параллелизм в существующие последовательные программы. Лабораторная работа №2 посвящена изучению основ параллельного программирования с использованием OpenMP, а также реализации и оптимизации различных алгоритмов работы с массивами данных, включая операции сложения элементов и быструю сортировку. Целью данной работы является приобретение практических навыков разработки параллельных программ, оценки их производительности и понимание преимуществ многопоточности в обработке больших массивов данных.

Постановка задач

Целью лабораторной работы №2 является приобретение знаний, умений и навыков в области технологии параллельного программирования средствами библиотеки OpenMP. Для достижения поставленной цели необходимо решить следующие задачи:

Изучить способы разделения задач между потоками:

Ознакомиться с основными концепциями многопоточности.

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

Освоить параллельные циклы для выполнения арифметических операций:

Разработать последовательный и параллельный варианты программы для вычисления суммы элементов массива размером более 100000.

Запустить программы как на суперкомпьютере «ПГНИУ-Кеплер», так и в локальной среде программирования.

Провести анализ результатов при использовании различных количеств потоков.

Реализовать параллельную быструю сортировку:

Написать последовательный и параллельный варианты программы быстрой сортировки массива размером более 100000 элементов.

Выполнить запуск программ на суперкомпьютере и в локальной среде.

Оценить производительность при использовании различных количеств потоков.

Работа с одномерными и двумерными массивами:

Одномерные массивы:

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

Запустить программы на суперкомпьютере и в локальной среде, используя различные количества потоков.

Проанализировать результаты производительности.

Двумерные массивы:

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

Выполнить запуск и анализ производительности при различных конфигурациях потоков.

Компиляция и запуск программ:

Научиться компилировать программы с использованием OpenMP.

Освоить запуск параллельных программ с различным количеством потоков как на суперкомпьютере, так и в локальной среде.

Анализ результатов:

Сравнить время выполнения последовательных и параллельных версий программ.

Оценить эффективность использования потоков и выявить оптимальные конфигурации для различных типов задач.

Сделать выводы о преимуществах и ограничениях параллельного программирования с использованием OpenMP.

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

Лабораторная работа № 3 по дисциплине «Параллельные вычислительные системы»

Тема: Введение в MPI. Операции с массивами. Пузырьковая сортировка

Введение

В современном мире, где объемы обрабатываемых данных стремительно растут, эффективное использование вычислительных ресурсов становится ключевым фактором для успешного решения сложных задач. Параллельное программирование позволяет значительно ускорить процесс вычислений за счет одновременного выполнения множества операций. Одним из наиболее распространенных инструментов для реализации параллельных вычислений является библиотека MPI (Message Passing Interface).

Лабораторная работа №3 направлена на ознакомление с основами технологии параллельного программирования средствами библиотеки MPI. В рамках работы мы будем изучать способы разделения задач между процессами, а также реализовывать и оптимизировать различные алгоритмы обработки массивов данных. Особое внимание будет уделено параллельной реализации арифметических операций и алгоритма пузырьковой сортировки, что позволит на практике оценить преимущества и особенности использования MPI в сравнении с последовательными подходами.

Постановка задач

Целью лабораторной работы №3 «Введение в MPI. Операции с массивами. Пузырьковая сортировка» является приобретение знаний, умений и навыков в области технологии параллельного программирования средствами библиотеки MPI. Для достижения поставленной цели необходимо решить следующие основные задачи:

Изучить основы технологии параллельного программирования средствами библиотеки MPI:

Ознакомиться с концепциями и принципами работы MPI.

Понять механизмы передачи сообщений между процессами и синхронизации их работы.

Используя средства библиотеки MPI, научиться решать задачи сложения (и других арифметических операций) элементов:

Разработать последовательный и параллельный варианты программы для вычисления суммы элементов массива размером более 100000.

Провести запуск программ как на суперкомпьютере «Пермский государственный национальный исследовательский университет-Кеплер», так и в локальной среде программирования.

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

Используя средства библиотеки MPI, научиться реализовывать параллельную работу пузырьковой сортировки элементов:

Написать последовательный и параллельный варианты программы для выполнения пузырьковой сортировки массива размером более 100000 элементов.

Запустить программы на суперкомпьютере и в локальной среде программирования.

Исследовать влияние количества потоков на скорость сортировки и эффективность параллельного подхода.

Работа с одномерными и двумерными массивами:

Одномерные массивы:

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

Запустить программы на суперкомпьютере и в локальной среде, используя различные количества потоков.

Проанализировать полученные результаты и оценить эффективность параллельных вычислений.

Двумерные массивы:

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

Выполнить запуск и анализ производительности при различных конфигурациях потоков.

Компиляция и запуск программ:

Освоить процесс компиляции программ с использованием MPI.

Научиться запускать параллельные программы с разным количеством потоков как на суперкомпьютере, так и в локальной среде.

Анализ результатов:

Сравнить время выполнения последовательных и параллельных версий программ.

Оценить масштабируемость и эффективность использования потоков.

Сделать выводы о преимуществах и ограничениях параллельного программирования с использованием MPI.

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

Лабораторная работа № 4 по дисциплине «Параллельные вычислительные системы»

Тема: Введение в CUDA. Операции с массивами. Сортировка слиянием

Введение

В условиях стремительного развития вычислительных технологий и увеличения объёмов обрабатываемых данных эффективность выполнения сложных вычислительных задач становится всё более важной. Одним из ключевых инструментов для повышения производительности является использование графических процессоров (GPU) в качестве ускорителей вычислений. Язык программирования CUDA C, разработанный компанией NVIDIA, предоставляет возможности для параллельного программирования на GPU, позволяя значительно ускорить выполнение вычислительных задач за счёт эффективного распределения ресурсов графического процессора.

Лабораторная работа №4 посвящена изучению основ технологии параллельного программирования с использованием графических процессоров на примере языка CUDA C. В ходе выполнения работы студент познакомится с основными принципами работы с CUDA, научится реализовывать параллельные операции над массивами данных и будет сравнивать производительность последовательных и параллельных алгоритмов сортировки. Особое внимание будет уделено реализации и оптимизации алгоритма сортировки слиянием на GPU, что позволит оценить преимущества использования CUDA для решения задач обработки больших объёмов данных.

Постановка задач

Целью лабораторной работы №4 «Введение в CUDA. Операции с массивами. Сортировка слиянием» является приобретение знаний, умений и навыков в области технологии параллельного программирования с использованием графических процессоров в качестве ускорителей вычислений на примере языка CUDA C. Для достижения поставленной цели необходимо решить следующие основные задачи:

Изучить основы технологии параллельного программирования с использованием графических процессоров в качестве ускорителей вычислений на примере языка CUDA C:

Ознакомиться с архитектурой GPU и принципами работы CUDA.

Изучить основные концепции параллельного программирования, такие как потоки, блоки и сетки.

Используя средства графического процессора, научиться решать задачи сложения (и других арифметических операций) элементов массива:

Разработать последовательный и параллельный варианты программы для вычисления суммы элементов массива размером более 100000.

Запустить программы на суперкомпьютере «Пермский государственный национальный исследовательский университет-Кеплер» и в локальной среде программирования.

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

Используя средства графического процессора, научиться реализовывать параллельную работу сортировки элементов методом слияния:

Написать последовательный и параллельный варианты программы сортировки массива размером более 100000 элементов.

Запустить программы на суперкомпьютере и в локальной среде программирования.

Сравнить время работы последовательного и параллельного алгоритмов для различных последовательностей данных.

Работа с одномерными и двумерными массивами:

Одномерные массивы:

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

Запустить программы на суперкомпьютере и в локальной среде, используя различные количества потоков.

Проанализировать полученные результаты и оценить эффективность параллельных вычислений.

Двумерные массивы:

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

Выполнить запуск и анализ производительности при различных конфигурациях потоков.

Компиляция и запуск программ:

Освоить процесс компиляции программ с использованием CUDA.

Научиться запускать параллельные программы с разным количеством потоков как на суперкомпьютере, так и в локальной среде.

Анализ результатов:

Сравнить время выполнения последовательных и параллельных версий программ.

Оценить масштабируемость и эффективность использования потоков.

Сделать выводы о преимуществах и ограничениях параллельного программирования с использованием CUDA.

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

Подробное описание

📘 О чем эта работа

Отчёт посвящён освоению основ работы на суперкомпьютерной системе: удалённое подключение (консольное и графическое), генерация SSH-ключей, настройка VPN и среды программирования. В качестве объекта рассматривается вычислительный кластер с конкретными ресурсами и конфигурацией, а предмет — практические навыки компиляции и запуска параллельных программ (OpenMP, MPI, CUDA).

📚 Что внутри

В работе содержатся подробные инструкции и результаты практических заданий:

  • Инструкции по подключению: SSH (OpenSSH, PuTTY, MobaXterm), VPN (Cisco AnyConnect), графический доступ через X2Go и VNC; пошаговый процесс генерации ключей с PuttyKeyGen и конвертацией в формат OpenSSH.
  • Описание архитектуры кластера: 16 процессоров Intel Xeon E5-2680, 16 видеопроцессоров NVIDIA Tesla K20, 512 ГБ ОЗУ, 8 вычислительных узлов (по 2 CPU и 2 GPU на узел), сеть InfiniBand FDR10 4x (~100 Гбит/с), сервисная сеть 10G Ethernet и управляющая сеть Gigabit, система хранения 36 ТБ.
  • Практическая часть с исходными текстами и результатами: параллельные и последовательные реализации суммирования массива, параллельная быстрая сортировка (quicksort с задачами OpenMP), операции над одномерными и двумерными массивами (сложение, вычитание, умножение, деление). Включены примеры компиляции и запуска (gcc/clang с флагом '-fopenmp', mpicc для MPI, nvcc для CUDA).
  • Тесты производительности: замеры времени при 4, 8, 16, 32 потоках; вывод о целесообразности распараллеливания и ограничениях по числу потоков для разных задач (на практике ускорение растёт до ~16 потоков, в некоторых задачах до 32 при увеличении объёма данных).
  • Рекомендации по оптимизации: выбор числа потоков, использование reduction, контроль глубины создания задач в рекурсивных алгоритмах, учёт пропускной способности InfiniBand и объёма ОЗУ.

📊 Для кого подходит

Работа полезна студентам и преподавателям прикладной математики, информатики и инженерных направлений, изучающим параллельное программирование; также подходит для подготовки лабораторных и практических занятий по OpenMP, MPI и CUDA, и для быстрого ознакомления с эксплуатацией университетского кластера.

✨ Особенности

Конкретные преимущества отчёта: точные параметры кластера (CPU, GPU, память, сети, СХД), пошаговые инструкции по безопасному подключению и генерации ключей, готовые исходники на C/C++ для задач суммирования, сортировки и матричных операций, измерения времени и рекомендации по выбору потоков. Приведены примеры как для работы на суперкомпьютере, так и для локальной среды разработки, что облегчает переносимость экспериментов.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура и содержание соответствуют стандартным требованиям лабораторных работ по параллельным вычислениям: цель, постановка задач, методика, листинги, результаты и выводы — легко адаптируется под требования другого вуза.

Можно адаптировать?
Да. Исходные коды (OpenMP/MPI/CUDA) и инструкции по компиляции/запуску легко модифицируются под другую конфигурацию кластера или под локальный ПК; указаны ключевые параметры (флаги компилятора, рекомендации по числу потоков и объёму данных).