Разработка и сборка программы
Разработка кода
Допустим, ваша задача называется vector_sum.
- В файле vector_sum.h вам нужно написать объявления функций, используемых в вашей программе.
- В файле vector_cum.cpp вам нужно написать определения функций, объявленных в заголовочном файле.
- В файле main.cpp вам нужно написать тесты Google Test (не менее пяти) и разместить функцию main.
MPI & Google Test
Подключение нужных заголовочных файлов в main.cpp для Google Test:
#include <mpi.h>
#include <gtest-mpi-listener.hpp>
#include <gtest/gtest.h>
Возможная реализация main
при использовании Google Test совместно с MPI:
int main(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
MPI_Init(&argc, &argv);
::testing::AddGlobalTestEnvironment(new GTestMPIListener::MPIEnvironment);
::testing::TestEventListeners &listeners = ::testing::UnitTest::GetInstance()->listeners();
listeners.Release(listeners.default_result_printer());
listeners.Release(listeners.default_xml_generator());
listeners.Append(new GTestMPIListener::MPIMinimalistPrinter);
return RUN_ALL_TESTS();
}
Цикл сборки с помощью CMake
- Перейдите в папку build вашего репозитория. Если ее нет, создайте ее:
mkdir build && cd build
-
Создайте служебные файлы сборки с помощью CMake. Для этого, находясь в папке build, выполните одну из команд ниже:
- Для сборки с MPI:
cmake -DUSE_MPI=ON ..
- другие команды будут добавлены позже (пока что не требуются)
На этом этапе ошибок возникнуть не должно. Вы должны увидеть сообщение об успехе:
-- Configuring done -- Generating done -- Build files have been written to: .../pp_2020_autumn_informatics/build
- Для сборки с MPI:
- Запустите компиляцию программы. Для этого, находясь в папке build, выполните команду
cmake --build .
Вы можете запустить сборку только для своего проекта, используя аргумент
--target
. Например, если ваша папка называется ivanov_i_vector_sum, то выполните такую команду:cmake --build . --target ivanov_i_vector_sum_mpi
- После завершения сборки с помощью обнаруженного в системе компилятора изучите список выведенных ошибок в ваших файлах с кодом (если они есть) и исправьте их.
Запуск программы
Собранные таким образом файлы находятся в папке build/bin репозитория. Запускать их на нескольких процессах можно с помощью утилиты mpiexec. Пример запуска программы на 4 процессах:
mpiexec -n 4 ./bin/ivanov_i_vector_sum_mpi
Обратите внимание, что ваша программа должна корректно работать для любого положительного числа процессов.