Vlákno názorů k článku Test Intel Arc A580 na Linuxu, IBM POWER11 v GCC od Pavel Píša - K PowerPC Matrix-Multiply Assist ,jsem dohledal následující přehledový...

  • Článek je starý, nové názory již nelze přidávat.
  • 22. 10. 2023 11:56

    Pavel Píša

    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/redpa­pers/pdfs/red­p5612.pdf">Ma­trix-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/zkra­covat 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čů.

  • 23. 10. 2023 11:23

    cc

    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.