Содержит примеры утилит, использующих технологии параллельного программирования для повышения производительности вычислений.
Утилиты для умножения 2 квадратных матриц вида I - (2/N)*A,
где I - единичная матрица размера N:
1 0 ... 0
0 1 ... 0
I = 0 0 1...0
...
0 0 ... 1
A - матрица размера N, содержащая в качестве элементов только 1:
1 1 ... 1
1 1 ... 1
А = 1 1 1...1
...
1 1 ... 1
Контанта N определена в исходном коде как 8192.
Утилита, вычисляющая произведение матриц указанного выше вида с использованием библиотеки Intel MKL.
Использование:
mprod_mkl [-b block_size] [-t topology]
Параметры:
b - размер блоков, который будет использован при блочно-циклическом распределении фрагментов матриц по процессам. Опционален
t - используемая топология. Возможные значения - "r" (разбиение матриц на строки) и "c" (разбиение на столбцы). Параметр опционален, при его отсутствии будет использовано блочно-циклическое распределение
Утилита, вычисляющая произведение матриц указанного выше вида путем разделения их на прямоугольные блоки. Размеры блоков определены числом процессов и рассчитываются на основе двумерной сетки процессов. Одинаковы для всех процессов, кроме процессов, лежащих на правой и нижней границах двумерной сетки (в том случае, если размер исходных матриц не делится нацело на соответствующие размеры сетки).
Использование:
mprod_mpi
Программа не принимает никаких параметров с командной строки.