Главная страница
Навигация по странице:

  • Отчет по дисциплине: «Вычислительные системы» Лабораторная

  • Цель работы

  • Отчет по дисциплине Вычислительные системы Лабораторная Работа 6


    Скачать 116.01 Kb.
    НазваниеОтчет по дисциплине Вычислительные системы Лабораторная Работа 6
    Дата08.06.2022
    Размер116.01 Kb.
    Формат файлаdocx
    Имя файлаBC_LAB6.docx
    ТипОтчет
    #577750

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

    ВЫСШЕГО ОБРАЗОВАНИЯ

    «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

    Кафедра вычислительной техники




    Отчет

    по дисциплине: «Вычислительные системы»

    Лабораторная Работа №6

    Выполнили:

    Студент гр. АММ2-21,

    Литвинов А.А.






    Новосибирск, 2022

    Цель работы: научиться реализовывать программы при помощи многопоточного программирования.

    Задание:

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

    Использовать готовые контейнеры и скрипты.

    1. Разработать программу, возвращающую в терминал приветствие от каждого процесса mpi-программы(«Hello,World!») со всех контейнеров образующих кластер.

    2. Составить отчет с результатами выполнения работы.

    В качестве среды за основу взят контейнер: https://github.com/giovtorres/slurm-docker-cluster

    Однако в контейнере отсутствует поддержка компилятора mpicc, поэтому в dockerfile необходимо добавить следующее:

    RUN wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.0.tar.gz

    RUN tar -zxvf openmpi-3.1.0.tar.gz

    RUN cd openmpi-3.1.0/ && ./configure && make && make install

    Перейдем в PowerShell и соберем контейнер:

    docker build -t scidas/slurm.base:19.05.1 .

    Поднимем наш контейнер как демон: docker-compose up -d



    Смотрим процессы: docker ps

    Как можно видеть поднят сам кластер и два воркера, а также субд.



    Запустим bash внутри контейнера командой docker exec -it slurmctld bash.

    Напишем простую программу с использованием OpenMPI:

    #include

    #include

    int main(int argc, char** argv) {

    MPI_Init(NULL, NULL);

    int world_size;

    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int world_rank;

    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    char processor_name[MPI_MAX_PROCESSOR_NAME];

    int name_len;

    MPI_Get_processor_name(processor_name, &name_len);

    printf("Hello world from processor %s, rank %d out of %d processors\n",

    processor_name, world_rank, world_size);

    MPI_Finalize();

    }

    Скомпилируем: mpicc hello.c -o hello.out

    Создадим скрипт запуска job.sh

    #!/bin/bash

    #

    #SBATCH --job-name=test

    #SBATCH --output=hello.out

    #

    #SBATCH --ntasks=2

    #

    srun -N 2 --mpi=openmpi hello.out



    написать администратору сайта