Матричный умножитель с долотом

Я хочу описать матричный множитель с помощью Chisel, но есть некоторые вещи, которые я не понимаю.

Во-первых, я нашел этот ответ, содержащий код матричного умножителя 3X5. Я хотел бы обобщить его для любой квадратной матрицы размером до 128X128. Я знаю, что в Chisel я могу параметризовать модуль, задав ему параметр размера (так что я буду использовать n.W вместо определенного размера). Но в конце концов, файл Verilog будет сгенерирован, верно? Значит, нужно исправить параметры? Я наверное кое-что путаю. Моя цель - адаптировать код, чтобы иметь возможность выполнять любое умножение матриц размером до 128x128, и я не знаю, возможно ли это технически.


person user54517    schedule 21.11.2019    source источник


Ответы (1)


Преимущество долота в том, что все можно параметризовать. Тем не менее, в конце дня, когда вы создаете свое физическое оборудование, очевидно, что параметр должен быть исправлен. Преимущество параметризации заключается в том, что если вы не знаете свои точные требования (например, доступная площадь кристалла и т. Д.), Вы можете иметь готовую параметризованную версию, и когда придет время, вы вставите нужные значения и сгенерируете файл verilog для этого параметра. И, чтобы ответить на ваш вопрос, да, можно выполнить любое матричное умножение до 128x128 (или больше, если на вашем ноутбуке достаточно оперативной памяти). Вы получаете verilog только при создании драйвера оборудования это расскажет вам, как создать verilog из chisel, так что вперед и создайте параметризованное оборудование.

person CV_Ruddha    schedule 21.11.2019
comment
Благодарю за ваш ответ. Так что реализации этого алгоритма en.wikipedia.org/wiki/Matrix_multiplication_algorithm будет достаточно? Итак, если я построю его с использованием матриц 128X128, чтобы выполнить вычисления с более низкой матрицей, скажем, 5X5, только заменив неиспользуемые поля нулями? - person user54517; 22.11.2019
comment
Таким образом можно дополнять нулями, но это будет пустой тратой вычислительной мощности. Я имею в виду, что вместо того, что вы сказали, код долота может быть параметризован таким образом, что, когда вы подключаете, скажем, 128 и 128, вы получаете оборудование для матрицы 128x128, аналогично, если вам нужна матрица 5x5, вам просто нужно будет подключить в значениях 5 и 5. - person CV_Ruddha; 22.11.2019