Как стать автором
Обновить

Математика матричных расширений: как происходит умножение матриц на примере T-Head Matrix Extension

Время на прочтение13 мин
Количество просмотров8K
Всего голосов 26: ↑26 и ↓0+37
Комментарии7

Комментарии 7

Большой текст, HPC, оптимизация, аккуратный код, отличные иллюстрации, аккуратный \TeXв тексте -- ммм, обожаю запах старого Хабра)

Текст-то очень хороший и грамотно написанный, но как раз на днях выяснилось, что кастомное векторное расширение от Alibaba содержит критические баги, позволяющие обходить любую программную защиту памяти и получать прямой доступ к данным в памяти: https://ghostwriteattack.com/ и тут https://www.theregister.com/2024/08/07/riscv_business_thead_c910_vulnerable/. Из-за отсутствия микрокода на RISC-V лечится только полным отключением этого самого расширения. Приехали...

В тексте речь идет не о векторном расширении, а о матричном. С910, о котором вы пишете, матричное расширение не содержит.

Очень интересно, спасибо. Но хотелось бы видеть ассемблерный код для интринсиков с пояснением что и в какие регистры помещается. И почему матричных регистров всего 8 ? Матричные регистры пересекаются с векторными ?

Спасибо за комментарий!
Да, думаю приводить asm код будет хорошей практикой, учту на будущее.
А на счет матричных регистров, в статье про стандартные матричные расширения RISC-V есть ответы на эти вопросы. 8 матричных регистров прописано в спецификации расширения. Оно независимое и с векторными регистрами не пересекается.

Сначала кратко рассмотрим наивную скалярную реализацию 

Есть подозрения, что реализация всё же нативная) А так статья отличная!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий