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