Method of Fast Matrix Multiplication Under ARM Architecture Using SIMD Instructions
dc.contributor.author | Dychka, I. A. | |
dc.contributor.author | Vinnyk, D. A. | |
dc.contributor.author | Bukhtiyarov, Yu. V. | |
dc.contributor.author | Yurchyshyn, V. Ya. | |
dc.date.accessioned | 2021-04-01T11:41:20Z | |
dc.date.available | 2021-04-01T11:41:20Z | |
dc.date.issued | 2020 | |
dc.description.abstracten | Background. Matrix multiplication is a rather complicated algorithm with a large number of operations. An additional problem is the nonlinear memory traversal of matrices. Matrix multiplication is widely used in various fields, such as neural networks, solutions of linear equation systems, matrix transformations, and so on. Therefore, it is important to develop a method of matrix multiplication, which will take into account the problems of the location of the matrices in memory, and will effectively manage the data when reused. Objective. The purpose of the paper is to develop a method of fast matrix multiplication of two matrices, as well as multiplying the matrix by the transposed matrix and by a list of vectors (including special case for only one vector), as well as to implement it as a function with optimization for ARM architecture processors. The function must be able to handle different types of data and submatrices. The integer result can be scaled. Methods. The main ideas of the developed method are simultaneous work with several rows/columns of input matrices and their splitting into blocks, which will allow the algorithm to run on the same memory for a while. The C programming language was chosen for implementation. SIMD instructions were used to increase productivity. We also need to properly organize the memory preloading for effective implementation under the ARM architecture. Results. A function that performs matrix multiplication by the developed method with the necessary parameters was implemented as a result of the study. Tests on various sizes and types have shown that the implemented function is faster than analogues from the OpenCV2 and Eigen 3 libraries. Testing was done using the vipmed utility for running and measuring features developed for enterprise use at VIT. Conclusions. The proposed matrix multiplication method gives the expected acceleration of matrix multiplication operations, has passed evaluation test for use and meets the target requirements. For further work, it is necessary to study in more detail the influence of the cache at different levels and compare with other existing libraries. | uk |
dc.description.abstractru | Проблематика. Матричное умножение является достаточно сложным алгоритмом с большим количеством операций. Дополнительной проблемой также является нелинейный обход матриц по памяти. Операция матричного умножения широко используется в различных сферах, таких как нейронные сети, решения систем линейных уравнений, матричные преобразования и т.п. Поэтому важно разработать метод матричного умножения, который будет учитывать проблемы расположения матриц в памяти, а также эффективно будет распоряжаться данными при их повторном использовании. Цель исследования. Разработать метод быстрого матричного умножения двух матриц, умножения матрицы на транспонированную и на список векторов (в т.ч. частный случай для одного вектора); реализовать его в виде функции с оптимизацией для процессоров архитектуры ARM. Функция должна уметь работать с различными типами данных и с подматрицамы. Целочисленный результат может быть отмасштабирован. Методика реализации. Главными идеями разработанного метода является одновременный проход несколькими строками/столбцами входных матриц и их разбиение на блоки, что позволит алгоритму некоторое время работать на одной и той же памяти. Для реализации был выбран язык программирования С. Для увеличения производительности использованы SIMD-инструкции. Для эффективной реализации под архитектуру ARM также необходимо правильно организовать работу с предварительной загрузкой памяти. Результаты исследования. Реализована функция, которая выполняет матричное умножение по разработанному методу с необходимыми параметрами. Проверки на разных размерах и типах показали, что реализованная функция быстрее аналогов из библиотек OpenCV2 и Eigen 3. Тестирование проходило с помощью утилиты vipmed для запусков и замеров характеристик, разработанной для корпоративного пользования в компании VIT. Выводы. Предложенный метод умножения матриц дает ожидаемое ускорение операции умножения матриц, прошел оценочный тест на использование и соответствует заданным в цели требованиям. Для дальнейшей работы необходимо подробнее исследовать влияние кэша разного уровня и сравнить с другими существующими библиотеками. | uk |
dc.description.abstractuk | Проблематика. Матричне множення є досить складним алгоритмом із великою кількістю операцій. Додатковою проблемою також є нелінійний обхід матриць по пам’яті. Операція матричного множення широко використовується в різних сферах, таких як нейронні мережі, розв’язки систем лінійних рівнянь, матричні перетворення тощо. Тож важливо розробити метод матричного множення, що враховуватиме проблеми з розташуванням матриць у пам’яті, а також ефективно розпоряджатиметься даними при їх повторному використанні. Мета дослідження. Розробити метод швидкого матричного множення двох матриць, множення матриці на транспоновану та на список векторів (у т.ч. окремий випадок для одного вектора); реалізувати його у вигляді функції з оптимізацією для процесорів архітектури ARM. Функція має вміти працювати з різними типами даних та з підматрицями. Цілочисловий результат може бути масштабований. Методика реалізації. Головними ідеями розробленого методу є одночасних прохід декількома рядками/стовпчиками вхідних матриць та їх розбиття на блоки, що дасть алгоритму змогу деякий час працювати на одній і тій самій пам’яті. Для реалізації було вибрано мову програмування С. Для збільшення продуктивності використано SIMD-інструкції. Для ефективної реалізації під архітектуру ARM також необхідно правильно організувати роботу з попереднім завантаженням пам’яті. Результати дослідження. Реалізовано функцію, що виконує матричне множення за розробленим методом із необхідними параметрами. Перевірки на різних розмірах і типах показали, що реалізована функція є швидшою за аналоги з бібліотек OpenCV2 та Eigen 3. Тестування відбувалося за допомогою утиліти vipmed для запусків і замірів характеристик, розробленої для корпоративного користування у компанії VIT. Висновки. Запропонований метод множення матриць дає очікуване прискорення операції множення матриць, пройшов оціночний тест на використання та відповідає заданим у меті вимогам. Для подальшої роботи необхідно детальніше дослідити вплив кеша різного рівня та порівняти з іншими існуючими бібліотеками. | uk |
dc.format.pagerange | Pp. 35-43 | uk |
dc.identifier.citation | Method of Fast Matrix Multiplication Under ARM Architecture Using SIMD Instructions / I. A. Dychka, D. A. Vinnyk, Yu. V. Bukhtiyarov, V. Ya. Yurchyshyn // Наукові вісті КПІ : міжнародний науково-технічний журнал. – 2020. – № 2(129). – С. 35–43. – Бібліогр.: 9 назв. | uk |
dc.identifier.doi | https://doi.org/10.20535/kpi-sn.2020.2.205115 | |
dc.identifier.uri | https://ela.kpi.ua/handle/123456789/40380 | |
dc.language.iso | en | uk |
dc.publisher | КПІ ім. Ігоря Сікорського | uk |
dc.publisher.place | Київ | uk |
dc.relation.ispartof | Наукові вісті КПІ : міжнародний науково-технічний журнал, 2020, № 2(129) | uk |
dc.rights.uri | https://creativecommons.org/licenses/by/4.0/ | en |
dc.subject | matrix multiplication | uk |
dc.subject | ARM architecture | uk |
dc.subject | vector operations | uk |
dc.subject | matrix transposition | uk |
dc.subject | матричне множення | uk |
dc.subject | архітектура ARM | uk |
dc.subject | векторні операції | uk |
dc.subject | транспонування матриці | uk |
dc.subject | матричное умножение | uk |
dc.subject | архитектура ARM | uk |
dc.subject | векторные операции | uk |
dc.subject | транспонирование матрицы | uk |
dc.subject.udc | 004.231.2(045) | uk |
dc.title | Method of Fast Matrix Multiplication Under ARM Architecture Using SIMD Instructions | uk |
dc.title.alternative | Метод реалізації швидкого матричного множення під архітектуру ARM із використанням SIMD-інструкції | uk |
dc.title.alternative | Метод реализации быстрого матричного умножения под архитектуру ARM с использованием SIMD-инструкции | uk |
dc.type | Article | uk |
Файли
Контейнер файлів
1 - 1 з 1
Вантажиться...
- Назва:
- NVKPI2020-2_04.pdf
- Розмір:
- 333.66 KB
- Формат:
- Adobe Portable Document Format
- Опис:
Ліцензійна угода
1 - 1 з 1
Ескіз недоступний
- Назва:
- license.txt
- Розмір:
- 9.01 KB
- Формат:
- Item-specific license agreed upon to submission
- Опис: