K PowerPC Matrix-Multiply Assist ,jsem dohledal následující přehledový dokument k tomu co umí a jak ho používat <a htef="https://www.redbooks.ibm.com/redpapers/pdfs/redp5612.pdf">Matrix-Multiply Assist Best Practices Guide a vědecký článek A matrix math facility for Power ISA processors. Základem je pro 32-bit float pronásobení 4x4 elementů kdy je všech 16 výsledků přičítáno do 16 mezisoučtových položek 512 bit registru. Pokud se dopočítávají okrajová pole nebo spodní pravý roh, tak jsou k dispozici instrukce s maskováním přesahujících elementů. Nenašel jsem variantu instrukcí která by dovolila masky specifikovat nějakým registrem, to znamená, že ideálně počítání vyjde jen pro násobení matic, jejichž velikost je známá v době kompilace. Stejně tak jsem v textu nevšiml nějakého maskovaného (RISC-V V extension, ARM SVE predicate register) ukládání a načítání do/z paměti z VSRx registrů, ale to spíš předpokládám, že k dispozici bude. V každém případě lze předpokládat, že architektura Power má hodně sil, výkonu v této oblasti, a s podporou IEEE FP16 a i Intel bfloat16, kdy bude možné jednou operací násobit 8x8 elementů (int8 umí i 16x16 s částečně posčítanými výsledky) lze předpokládat i velmi velký výkon v oblasti machine learningu. Trochu mě mrzí to kódování masek jen do instrukcí, mimochodem kódovaných 64-bity (RISC-V opět na nutnost prodlužovat/zkracovat instrukce myslel dopředu). Pokud neexistuje varianta s určením z registrů, tak pak pro obecné BLAS použití nezbývá než tam mích hodně ošklivých ifů a nebo JIT kompilaci na danou operaci alá GEGL... Pokud někdo nastudoval více, budu rád, když mě doplní. Asi představím i tuto alternativu k SVE svým studentům na předmětu B4M35PAP - Pokročilé architektury počítačů.
Tak zrovna implementace maskování v RISC-V je teda hodně nepovedená. Zeroing tam není a pro maskování je jen jeden registr, který je vlastně SIMD registr (to nejhorší řešení). Až mi přijde, že RISC-V V navrhoval někdo, kdo nikdy žádný SIMD kód nenapsal.
Nejlepší SIMD je momentálně AVX-512, těžko říct jestli RISC-V bude této instrukční sadě vůbec někdy být schopný konkurovat.