========================== Aufgabe: GEMM-Micro-Kernel [TOC] ========================== Die GEMM-Operation $C \leftarrow \beta\,C + \alpha\,A B$ soll für folgenden Spezialfall programmiert werden: - $C$ ist eine $M_r \times N_r$ Matrix im Full-Storage-Format. - $A$ ist eine $M_r \times k$ Col-Major Matrix. - $B$ ist eine $k \times N_r$ Row-Major Matrix. - Die Elemente von $A$ und $B$ liegen zusammenhängend im Speicher. Algorithmus =========== Bei der Implementierung soll seine lokale $M_r \times N_r$ Matrix $\overline{AB}$ benutzt werden die zunächst mit Null initialisiert und dann mit dem Produkt $A \cdot B$ überschrieben wird: ---- BOX ----------------------------------------------------------------------- - $\overline{AB} \leftarrow \mathbf{0}$ - $\overline{AB} \leftarrow A \cdot B$ - Falls $\beta = 0$ - $C \leftarrow \alpha\,\overline{AB}$ - Sonst - $C \leftarrow \beta\,C + \alpha\,\overline{AB}$ -------------------------------------------------------------------------------- Weitere Anforderungen: ---------------------- - Die Funktion soll keine Funktionsaufrufe beinhalten. - Bei geschachtelten Schleifen sollen die innersten Schleifen vom Compiler ausgrollt werden können. Vorlage ======= ---- CODE (type=c) ------------------------------------------------------------- #include #include #include #include #include //-- setup and print matrices -------------------------------------------------- void initGeMatrix(int m, int n, double *A, int incRowA, int incColA) { int i, j; for (i=0; i doc:index back -> doc:session07/page06 next -> doc:session07/page08