Программный эмулятор матричного умножения с учётом аппаратных ограничений персональных компьютеров.
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.