Módosítások

Intel Xeon Phi

713 bájt hozzáadva, 2016. május 3., 13:40
Hatékony hossz választás
====AoS -> SoA====
====Hatékony hossz választás====
Olyan esetben jelent előnyt, ha például az n*n-es mátrix esetén n nem osztható 16-val, mert akkor a vektorizáció nem teljesen hajtható végre.
<pre>
// n%16 != 0
float* A = _mm_malloc(sizeof(float)*n*n, 64);
</pre>
Ilyen esetben mindig marad egy kis vektor részlet, amire elemenként kell elvégezni a műveletet.<br />
A megoldást az jelenti, hogy a memória allokálást kiterjesztjük és nagyobb memória területet foglalunk a változónak, így már alkalmazható lesz a vektorizáció, mivel a maradvány területen is el tudjuk végezni a műveletet egy lépésben.
<pre>
int lda=n;
if (n % 16 != 0) lda += (16 - n%16); // most lda%16==0
float* A = _mm_malloc(sizeof(float)*n*lda, 64);
</pre>
===="Héj ciklusok" kiköszöbölése====
98
szerkesztés

Navigációs menü