- Разработать классы
GpuSpec,CpuSpec,RamSpec,LanSpec, сохраняющие информацию о технических характеристиках соответствующих устройств. - Разработать класс
ClusterNode, моделирующий вычислительный узел кластера.ClusterNodeдолжен содержать сведения об установленных в нём технических устройствах. - Разработать класс
Cluster, моделирующий структуру вычислительного кластера.
Для всех классов реализовать методы Print, Import, Export, соответственно выводящие сведения в консоль и реализующих импорт/экспорт данных из/в текстовые файлы. Разработать модульные тесты.
Диаграмма классов
Программа для 1-ой лабораторной работы находится по пути 1/lab1 (пакетный файл). Тесты для программы 1-ой лабораторной работы находится по пути 1/lab1_tests (пакетный файл). Если тесты ни разу не запускались, сначала необходимо запустить rebuild_tests (пакетный файл). При запуске пакетных файлов убедитесь, что на пк установлен g++ и cmake.
Разработать классы DenseMatrix, DiagonalMatrix, BlockMatrix, способные выполнять плюс, минус, умножение (скалярное и матричное), транспонирование матрицы. Реализовать проверку импортированной матрицы.
Для всех классов реализовать методы Print, Import, Export, соответственно выводящие сведения в консоль и реализующих импорт/экспорт данных из/в текстовые файлы.
Программа для 2-ой лабораторной работы находится по пути 2/main.exe (скомпилированная).
Разработать класс Vector, от которого будут наследоваться VectorSingleThread для однопоточныйх вычислений и VectorMultiThread с учетом многопоточныйх вычислений с std::thread.
Для классов вектора разработать методы: инициализации константным значением, инициализации случайным значением, нахождения минимального значения, нахождения индекса минимального значения, нахождения максимального значения, нахождения индекса максимального значения, нахождения суммы значений, нахождения cреднего значения, нахождения эвклидовой нормы, нахождения скалярного произведения и создания данных теста времени выполнения.
Для классов VectorSingleThread, VectorMultiThread и VectorOpenMP реализовать импорт и экспорт вектора. Сделать проверку на иницализацию объекта перед использованием методов.
Замер маштабирования производительности от потоков для вектора типа double размером 109 (реализация std::thread)
Замер маштабирования производительности от потоков для вектора типа double размером 109 (реализация OpenMP)
Программа для 3-ей лабораторной работы находится по пути 3/main.exe (скомпилированная). Для отображения графика можно использовать ярлык plot_graph, но для начала его нужно пересоздать (recreate_shortcut.bat). Если не работает построение, нужно убедиться, что установлен python, уставновить пакеты (install_requirements.bat) и собрать программу (build_python_app.bat). Для того, чтобы использовать импорт из файла для инициализации объекта, нужно сгенерировать файлы для импорта, запустив create_import_data.exe. Данные тестов можно получить, запустив create_test_data.exe. Параметры данных для тестов настраиваются в конфигах (директория config).
P.S. Параметры размерности вектора в конфигах влияют на загрузку озу. Т.к. при использовании размера вектора в 109, использование памяти одним только create_test_data.exe переходит за 16гб. При размерности вектора 108 потребление памяти около 3гб.


