1. Главная
  2. Библиотека
  3. Программирование
  4. Выполните реализацию параллельного алгоритма умножения...
Разбор задачи

Выполните реализацию параллельного алгоритма умножения матрицы на вектор, основанного на ленточном разбиении матрицы на горизонтальные полосы. Проведите вычислительные эксперименты с учетом параметров используемой вычислительной системы. Сравните

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Структуры и алгоритмы обработки данных
Выполните реализацию параллельного алгоритма умножения матрицы на вектор, основанного на ленточном разбиении матрицы на горизонтальные полосы. Проведите вычислительные эксперименты с учетом параметров используемой вычислительной системы. Сравните

Условие:

Выполните реализацию параллельного алгоритма умножения матрицы на вектор, основанного на ленточном разбиении матрицы на горизонтальные полосы. Проведите вычислительные эксперименты с учетом параметров используемой вычислительной системы. Сравните результаты реальных экспериментов с теоретическими оценками. В качестве исходной матрицы А используйте двумерный массив, заданный функцией f(i,j)f(i, j) :

(i2+j2)sin(2i2j)+4i+j3 \left(i^{2}+j^{2}\right) * \sin \left(2^{*} i^{2}-j\right)+\sqrt[3]{4^{*} i+j}
В качестве вектора b выбрать один из столбцов матрицы А.

Решение:

  1. Постановка задачи и исходные данные
    • Матрица A задается функцией:
    \tf(i, j) = (i² + j²) * sin(2 * i² – j) + ∛(4 * i + j)
    где индексы i и j пробегают диапазоны, задающие размерность матрицы (например, от 0 до N–1 и от 0 до M–1).
    • Вектор b выбирается как один из столбцов матрицы A. Например, можно выбрать первый столбец, тогда b[i] = A[i][0] для всех i.

  2. Основная идея параллельного алгоритма
    • Ленточное разбиение матрицы (strip decomposition) означает, что матрица A разбивается по строкам на горизонтальные полосы. Каждая полоса – это набор последовательных строк.
    • Если имеется p процессоров (или потоков), то каждая нить вычисляет произведение своей полосы матрицы A на вектор b, то есть вычисляет для каждой строки i из своей полосы значение
    \ty[i] = Σ (A[i][j] *...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой подход используется для разбиения матрицы на части при реализации параллельного алгоритма умножения матрицы на вектор с ленточным разбиением?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет