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