39 using namespace VMlib;
57 par.
len.push_back(static_cast<int>(n));
58 par.
disp.push_back(0);
63 par.
disp.push_back(static_cast<int>(n-1));
68 MPI_Scatter(par.
len.data(), 1, MPI_INT, &par.
myLen, 1, MPI_INT, 0,
commWork);
109 int nPerP =
static_cast<int>(n /
nProcWork);
113 par.
len.push_back(nPerP);
114 par.
disp.push_back(s*nPerP);
117 par.
len.push_back(static_cast<int>(n) - nPerP * (nProcWork - 1));
118 par.
disp.push_back(nPerP * (nProcWork - 1));
122 MPI_Scatter(par.
len.data(), 1, MPI_INT, &par.
myLen, 1, MPI_INT, 0,
commWork);
int totalLen
Общее число витков, разделенное между всеми процессорами
int myDisp
Индекс первого витка из числа витков, предназначенных текущему процессору
int myidWork
Локальный номер процессора, решающего конкретную задачу
std::vector< int > len
Список из чисел витков циклов, предназначенных для каждого процессора
parProp SplitMPIone(size_t n, bool bcastAll=false) const
Распределение задач по процессорам
int commWork
Коммуникатор для решения конкретной задачи
int myLen
Число витков, предназначенное текущему процессору
Заголовочный файл с описанием класса Parallel и структуры parProp.
std::vector< int > disp
Список, определяющий номер витка цикла, с которого должен начинать работу данный процессор ...
Стрктура, содержащая параметры исполнения задачи в параллельном MPI-режиме
parProp SplitMPI(size_t n, bool bcastAll=false) const
Распределение задач по процессорам
int nProcWork
Число процессоров, решающих конкретную задачу