Как создать, открыть и отправить на проверку Вашу работу

  • Существуют следующие типы all, mpi, omp, seq, stl, tbb поддиректорий (типов задач) в tasks директории. Ваша директория будет размещаться в директории согласно типу Вашей задачи. Создайте поддиректорию и назовите ее латинскими буквами следующим образом - <фамилия>_<первая буква имени>_<краткое название задачи>.

    Пример: seq/nesterov_a_vector_sum. Пожалуйста называйте все задачи одинаково, если у вас одна задача и несколько технологий. Если Ваша задача seq то задача будет размещена следующим образом - seq/nesterov_a_vector_sum, если omp то так omp/nesterov_a_vector_sum.

  • Перейдите в созданную Вами, директорию и начните работу. Директория должна содержать 4 обязательных поддиректории с файлами и 1 опциональную:

    • data - Опциональная директория с тестовыми файлами для экспериментов и тестов

    • func_tests - Директория с Google тестами для функционального тестирования.

    • include - Директория с header файлами, в которых содержатся чаще всего прототипы ваших функций и классов.

    • perf_tests - Директория с Google тестами для тестов на производительность. Должно быть всего 2 теста: run_task и run_pipeline.

    • src - Директория с исходными кодами, содержащая основную реализацию задач.

  • При максимальной конфигурации должно быть 12 исполняемых файлов для запуска:

    • <all, mpi, omp, seq, stl, tbb>_<func, perf>_tests. К примеру, omp_perf_tests - исполняемый файл запуска тестов на производительность, задач, связанных с технологией OpenMP.

  • Все Ваши прототипы и классы в include директории должны быть экранированы с помощью namespace. Имя namespace должно соотвествовать следующему примеру:

    namespace <last name>_<first letter of name>_<short task name>_<technology> {
    ...
    }
    e.g.
    namespace nesterov_a_test_task_seq {
    
    class TestTaskSequential : public ppc::core::Task {
    ...
    };
    
    }  // namespace nesterov_a_test_task_seq
    
  • Имя вашей группы тестов и одного ндивидуального тест кейса должно именоваться так:

    • Для функциональных тестов (для максимального покрытия):

      TEST(<last name>_<first letter of name>_<short task name>_<technology>, <any_name_of_test_case>) {
      ...
      }
      e.g.
      TEST(nesterov_a_vector_sum_omp, test_sum) {
      ...
      }
      
    • Для тестов на производительность (только 2 теста - pipeline and task - ни больше, ни меньше):

      TEST(<last name>_<first letter of name>_<short task name>_<technology>, <type_of_performance_validation>) {
      ...
      }
      e.g.
      TEST(nesterov_a_vector_sum_stl, test_pipeline_run) {
      ...
      }
      TEST(nesterov_a_vector_sum_stl, test_task_run) {
      ...
      }
      
  • Имя вашего pull request должно называться следующим образом:

    • Для задач:

      <Last Name First Name>. Task <Number of task>. Variant <Number of variant>. Technology <Name of technology>. <Full name of task>.
      Нестеров Александр. Задача 1. Вариант 123. Технология MPI. Сумма элементов вектора.
      
  • Приведите полную формулировку задачи в описании pull request.

    Пример pull request может быть найден в основном репозитории в разделе pull requests.

  • Работайте в своем собственном fork-репозитории. Каждую задачу нужно делать на новой ветке (не на master ветке)!!! Имя ветки такое же как и имя директории Вашей задачи. Для создания ветки воспользуйтесь следующей командой:

    git checkout -b nesterov_a_vector_sum_mpi
    

Несоблюдение правил приведет к падению сборки проекта.