muszaki_informatika:matrix_szorzas_gyorsitasa
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| muszaki_informatika:matrix_szorzas_gyorsitasa [2025/02/12 10:22] – knehez | muszaki_informatika:matrix_szorzas_gyorsitasa [2025/02/12 10:29] (current) – knehez | ||
|---|---|---|---|
| Line 72: | Line 72: | ||
| \begin{bmatrix} 3 & 4 \\ 7 & 8 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$$ | \begin{bmatrix} 3 & 4 \\ 7 & 8 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$$ | ||
| - | Számoljuk ki az egyes részmátrixok szorzatát | + | Számoljuk ki az egyes részmátrixok szorzatát: |
| $$ \begin{bmatrix} 1\cdot1 + 2\cdot0 & 1\cdot0 + 2\cdot1 \\ 5\cdot1 + 6\cdot0 & 5\cdot0 + 6\cdot1 \end{bmatrix} = | $$ \begin{bmatrix} 1\cdot1 + 2\cdot0 & 1\cdot0 + 2\cdot1 \\ 5\cdot1 + 6\cdot0 & 5\cdot0 + 6\cdot1 \end{bmatrix} = | ||
| Line 85: | Line 85: | ||
| === Végeredmény === | === Végeredmény === | ||
| - | Hasonlóan számolva az összes | + | Hasonlóan számolva az összes |
| $$ C = | $$ C = | ||
| Line 95: | Line 95: | ||
| \end{bmatrix} $$ | \end{bmatrix} $$ | ||
| + | Miért gyorsabb ez a módszer? | ||
| + | * Cache-hatékonyság: | ||
| + | * Kevesebb memória-hozzáférés: | ||
| + | * Jól párhuzamosítható: | ||
| + | |||
| + | **C** implementáció: | ||
| + | |||
| + | <sxh c> | ||
| + | void multiplyMatricesBlocked(int A[N][N], int B[N][N], int C[N][N]) { | ||
| + | // Eredménymátrix nullázása | ||
| + | for (int i = 0; i < N; i++) { | ||
| + | for (int j = 0; j < N; j++) { | ||
| + | C[i][j] = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Blokkosított szorzás | ||
| + | for (int bi = 0; bi < N; bi += BLOCK_SIZE) { | ||
| + | for (int bj = 0; bj < N; bj += BLOCK_SIZE) { | ||
| + | for (int bk = 0; bk < N; bk += BLOCK_SIZE) { | ||
| + | |||
| + | // Blokkon belüli műveletek | ||
| + | for (int i = bi; i < bi + BLOCK_SIZE; i++) { | ||
| + | for (int j = bj; j < bj + BLOCK_SIZE; j++) { | ||
| + | for (int k = bk; k < bk + BLOCK_SIZE; k++) { | ||
| + | C[i][j] += A[i][k] * B[k][j]; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
muszaki_informatika/matrix_szorzas_gyorsitasa.1739355741.txt.gz · Last modified: 2025/02/12 10:22 by knehez
