ВУЗ:
Рубрика:
112
Рис. 6.5 Разбиение исходной матрицы A на полосы в случае 4 процессов
После инициализации MPI, определения количества активиро-
ванных процессов в приложении nprocs, собственного номера про-
цесса iam, заполнения исходной матрицы происходит вычисление
параметров, характеризующих расчетную полосу матрицы для каж-
дого процесса. Так, каждый процесс может вычислять фрагмент
вектора нового приближенного решения в своей полосе, ограничен-
ной строками расширенной матрицы с номерами first и last, кото-
рые определяются следующим образом:
first = iam*m_size/nprocs+1
last = (iam+1)*m_size/nprocs
где iam – номер процесса; nprocs – количество процессов приложе-
ния; m_size – размерность матрицы.
При этом число значений вектора xcount, вычисляемых каждым
процессом, будет равно:
xcount = (iam+1)*m_size/nprocs - iam*m_size/nprocs
Передача фрагмента вектора
1k
x , вновь вычисленного процес-
сом, и получение новых значений от других процессов осуществля-
ются при помощи векторной коллективной операции
MPI_ALLTOALLV. Каждый процесс посылает блок вектора xx с
числом элементов xcount2, удаленных от начала вектора на
xnumer2 значений индекса, всем процессам (в том числе и себе).
Полученные от других процессов блоки значений с числом элемен-
тов xcount записываются в вектор x, начиная с позиции, сдвинутой
относительно начала вектора на xnumer.
Страницы
- « первая
- ‹ предыдущая
- …
- 110
- 111
- 112
- 113
- 114
- …
- следующая ›
- последняя »
