| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include <cstdint> | ||
| 4 | #include <vector> | ||
| 5 | |||
| 6 | #include "nikolaev_d_most_dif_vec_neighbors/common/include/common.hpp" | ||
| 7 | #include "task/include/task.hpp" | ||
| 8 | |||
| 9 | namespace nikolaev_d_most_dif_vec_neighbors { | ||
| 10 | |||
| 11 | class NikolaevDMostDifVecNeighborsMPI : public BaseTask { | ||
| 12 | public: | ||
| 13 | static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { | ||
| 14 | return ppc::task::TypeOfTask::kMPI; | ||
| 15 | } | ||
| 16 | explicit NikolaevDMostDifVecNeighborsMPI(const InType &in); | ||
| 17 | |||
| 18 | private: | ||
| 19 | 20 | struct LocalMaxInfo { | |
| 20 | int64_t diff = -1; | ||
| 21 | int pair_first = 0; | ||
| 22 | int pair_second = 0; | ||
| 23 | int first_elem = 0; | ||
| 24 | int last_elem = 0; | ||
| 25 | }; | ||
| 26 | |||
| 27 | bool ValidationImpl() override; | ||
| 28 | bool PreProcessingImpl() override; | ||
| 29 | bool RunImpl() override; | ||
| 30 | bool PostProcessingImpl() override; | ||
| 31 | |||
| 32 | void FindLocalDiff(int rank, int size, int actual_processes, std::vector<int> &local_data, int local_size); | ||
| 33 | void ProcessLocalData(int rank, int actual_processes, std::vector<LocalMaxInfo> &all_info); | ||
| 34 | }; | ||
| 35 | |||
| 36 | } // namespace nikolaev_d_most_dif_vec_neighbors | ||
| 37 |