From 4c3db4aa74348d5cf41c43140d2a59d6fe2c8374 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Tue, 21 Jul 2026 14:49:23 +0000 Subject: simple implementation for N,M are both multiple of 8 --- cachelab-handout/trans.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'cachelab-handout/trans.c') diff --git a/cachelab-handout/trans.c b/cachelab-handout/trans.c index e40f6fc..d8f221b 100644 --- a/cachelab-handout/trans.c +++ b/cachelab-handout/trans.c @@ -22,6 +22,26 @@ int is_transpose(int M, int N, int A[N][M], int B[M][N]); char transpose_submit_desc[] = "Transpose submission"; void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { + int i, j, tmp, i2, j2; + const int blockSize = 8; + + // given N, M are multiples of blockSize + // just to test + for (i = 0; i < N/blockSize; i++) + { + for (j = 0; j < M/blockSize; j++) + { + // now i, j are indecies of smaller groups + for (i2 = 0; i2 < blockSize; i2++) + { + for (j2 = 0; j2 < blockSize; j2++) + { + tmp = A[i*blockSize + i2][j*blockSize + j2]; + B[j*blockSize + j2][i*blockSize + i2] = tmp; + } + } + } + } } /* -- cgit v1.3.1-4-g156e