Сворачиваемые блоки
- 1 year ago
- 0
- 0
Loop tiling (??????? , ????????? ????? ?? ????? [ ???????? ?? ?????? 2922 ??? ] ) — ?????????????? ?????????????? , ?????????? ??????? ?????????? ????????? ????? ?????? ????? ???????????.
?????? ?????? ??????????? ??????? ? ????????? ???????????? ???????????? ????????? ????? (??????? ????? ??????????? ?? ?????????? ??????????) ?? ????????? ????? ???????? ???????, ??? ????????? ??????? ???????????? ? ???? ????????? ?????? ?????? ? ???? ????????? ??? ?? ?????????????? ????????????? ? ???????? ?????????? ?????. ????????? ???????????? ???????????? ????? ???????? ? ????????? ??????? ?? ??????? ?????, ??????? ?????????? ? ???, ??? ???????? ? ????????? ????????????? ????, ???????? ?????????? ???????? ? ?????????? ?????????? ? ??????? ????.
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
c[i] = c[i] + a[i, j] * b[j];
????? ????????? ????? ?? ????? 2 × 2
for (i = 0; i < N; i += 2)
for (j = 0; j < N; j += 2)
for (ii = i; ii < min(i+2, N); ii++)
for (jj = j; jj < min(j+2, N); jj++)
c[ii] = c[ii] + a[ii, jj] * b[ii];
??????????, ???????????? ???????????? ????? ??????? N × N. ???? ???????, a[i, j] ? ???????? ????????? ??????, ????? ????? ?????? N × N. ???? N ????????? ??????? ??????? ????????, ? ?????? ???? ?????????? ???????????? ??? ????, ????? ????????? ???????? ??????, ?? ????????, ??????? ???????????? ? ???????? ????? ???????? (????????, ??? i = 1, j ???????? ?? 1 ?? N), ?? ????????? ??????? ?? ????, ?????????? ????????? ????????? ????? ???????, ??? ?????? ??????? ??????????????????.
?????? ???????? ????????????? ??????? ??????????????? ?????????????? ???????? ????????? ??????.
???????? ???:
for (i = 0; i < N; i++)
for (k = 0; k < N; k++)
for (j = 0; j < N; j++)
z[i, j] = z[i, j] + x[i, k] * y[k, j]
????? ????????? ?? ????? B × B:
for (k2 = 0; k2 < N; i += B)
for (j2 = 0; j2 < N; j += B)
for (i = 0; i < N; i++)
for (k1 = k2; k1 < min(k2 + B, N); k1++)
for (j1 = j2; k2 < min(j2 + B, N); j1++)
z[i, j1] = z[i, j1] + x[i, k1] * y[k1, j1];
?? ?????? ????? ??????????, ????? ?????? ????? ????????? ??? ??????????? ?????, ??? ??? ??? ??????? ?? ???????????? ?????????? ???????? ????????, ? ??????? ???????????? ??????. ??????? ???????? ?????? ????? ?????? ?????? ???? ? ?????????? ?????? ??????????????????.