/Matrix-multiplication-emulator

Программный эмулятор матричного умножения с учётом аппаратных ограничений персональных компьютеров

Primary LanguageJupyter NotebookGNU General Public License v3.0GPL-3.0

Matrix-multiplication-emulator

Программный эмулятор матричного умножения с учётом аппаратных ограничений персональных компьютеров.

Описание файлов

MAC.ipynb - последняя версия программы в формате Jupiter Notebook.

MAC.py - последняя версия программы, исходный файл на языке Python.

MAC временные диаграммы.pdf - временные диаграммы работы алгоритма для произведения матриц 2000х2000.

MAC структурная схема.pdf - структурная схема разработаного эмулятора.

Ответы на вопросы.pdf - даны ответы на пункты 1-3 (см. ниже).

Постановка задачи

Специфика работы с вычислительными устройствами на низком уровне – неприменимость RAM (машины с произвольным доступом к неограниченной памяти) модели. Вместо этого грубо можно считать, что имеется ограниченный по объему «кэш» с произвольным доступом, наружное хранилище информации неограниченного объема и шина данных с ограниченной пропускной способностью, через которую данные могут подгружаться в «кэш». Считайте, что время загрузки содержимого адреса внешнего хранилища много больше времени выполнения элементарной операции, время разрешения адреса «кэша» в точности совпадает с временем выполнения элементарной операции, операция загрузки данных может вестись параллельно выполнению вычислений. Схематичное взаимодействие модулей изображено на рисунке ниже:

Необходимо написать алгоритм перемножения матриц прямым методом, учитывая следующие условия:

• Обе матрицы хранятся во внешней памяти и должны быть загружены на устройство;

• Результирующая матрица должна быть выгружена во внешнюю память;

• Массив MAC содержит некоторое количество вычислителей, выполняющих операцию MAC. Все они могут выполнять вычисления одновременно и имеют одновременный доступ к КЭШ;

• Размеры матриц достаточно велики (например 100 000 Х 100 000 элементов);

• Скорость загрузки данных из RAM в 10 раз медленнее скорости выполнения операций умножения с накоплением и обращения к КЭШ;

• Разрядность чисел и результата умножения равна 4 Байт;

• Размер загружаемой страницы из RAM за один запрос равен 4096 Байт.

Также необходимо:

1. Дать асимптотическую оценку времени выполнения в зависимости от объема кэша и пропускной способности шины;

2. Найти оптимальное соотношение объема КЭШ и массива вычислителей, при условии ограничения скорости доступа в RAM;

3. Найти оптимальное соотношение объема КЭШ и скорости доступа в RAM, при условии ограничения размера массива MAC.