VM2D  1.12
Vortex methods for 2D flows simulation
Parallel.h
Go to the documentation of this file.
1 /*--------------------------------*- VMlib -*----------------*---------------*\
2 | ## ## ## ## ## ## ## | | Version 1.12 |
3 | ## ## ### ### ## ## | VMlib: VM2D/VM3D Library | 2024/01/14 |
4 | ## ## ## # ## ## ## #### | Open Source Code *----------------*
5 | #### ## ## ## ## ## ## | https://www.github.com/vortexmethods/VM2D |
6 | ## ## ## #### ### #### | https://www.github.com/vortexmethods/VM3D |
7 | |
8 | Copyright (C) 2017-2024 Ilia Marchevsky |
9 *-----------------------------------------------------------------------------*
10 | File name: parallel.h |
11 | Info: Source code of VMlib |
12 | |
13 | This file is part of VMlib. |
14 | VMLib is free software: you can redistribute it and/or modify it |
15 | under the terms of the GNU General Public License as published by |
16 | the Free Software Foundation, either version 3 of the License, or |
17 | (at your option) any later version. |
18 | |
19 | VMlib is distributed in the hope that it will be useful, but WITHOUT |
20 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
21 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
22 | for more details. |
23 | |
24 | You should have received a copy of the GNU General Public License |
25 | along with VMlib. If not, see <http://www.gnu.org/licenses/>. |
26 \*---------------------------------------------------------------------------*/
27 
28 
37 #ifndef PARALLEL_H
38 #define PARALLEL_H
39 
40 #include <vector>
41 #ifdef USE_MPI
42  #include "mpi.h"
43 #endif
44 
45 namespace VMlib
46 {
47 
54  struct parProp
55  {
57  std::vector<int> len;
58 
60  std::vector<int> disp;
61 
63  int myLen;
64 
66  int myDisp;
67 
69  int totalLen;
70  };
71 
72 
83  class Parallel
84  {
85  public:
87 #ifdef USE_MPI
88  MPI_Comm commWork;
89 #else
90  int commWork;
91 #endif
92 
94  int myidWork;
95 
97  int nProcWork;
98 
104  parProp SplitMPIone(size_t n, bool bcastAll = false) const;
105 
111  parProp SplitMPI(size_t n, bool bcastAll = false) const;
112 
113  };
114 
115 }//namespace VMlib
116 
117 #endif
int totalLen
Общее число витков, разделенное между всеми процессорами
Definition: Parallel.h:69
int myDisp
Индекс первого витка из числа витков, предназначенных текущему процессору
Definition: Parallel.h:66
int myidWork
Локальный номер процессора, решающего конкретную задачу
Definition: Parallel.h:94
std::vector< int > len
Список из чисел витков циклов, предназначенных для каждого процессора
Definition: Parallel.h:57
int commWork
Коммуникатор для решения конкретной задачи
Definition: Parallel.h:90
int myLen
Число витков, предназначенное текущему процессору
Definition: Parallel.h:63
std::vector< int > disp
Список, определяющий номер витка цикла, с которого должен начинать работу данный процессор ...
Definition: Parallel.h:60
Класс, опеделяющий параметры исполнения задачи в параллельном MPI-режиме
Definition: Parallel.h:83
Стрктура, содержащая параметры исполнения задачи в параллельном MPI-режиме
Definition: Parallel.h:54
int nProcWork
Число процессоров, решающих конкретную задачу
Definition: Parallel.h:97