diff options
| author | _ov4 <ov4@ov4.org> | 2026-07-22 10:38:44 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-07-22 10:38:44 +0000 |
| commit | bec2926ad814415235905d60cd6dab408225687c (patch) | |
| tree | 579277ed3de26532a583a8105716190f30859a09 | |
| parent | 4c3db4aa74348d5cf41c43140d2a59d6fe2c8374 (diff) | |
better
| -rw-r--r-- | cachelab-handout/trans.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/cachelab-handout/trans.c b/cachelab-handout/trans.c index d8f221b..db6f9d3 100644 --- a/cachelab-handout/trans.c +++ b/cachelab-handout/trans.c @@ -22,8 +22,18 @@ 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]) { + + // FILE *fp = fopen("debug.log", "w"); + // if (fp == NULL) { + // perror("lol"); + // return; + // } + // fprintf(fp, "address of A and B: %p %p\n", A, B); + // fclose(fp); + + int i, j, tmp, i2, j2; - const int blockSize = 8; + const int blockSize = 4; // given N, M are multiples of blockSize // just to test @@ -31,12 +41,20 @@ void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { 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 + i2][i*blockSize + j2] = tmp; + } + } + for (i2 = 0; i2 < blockSize; i2++) + { + for (j2 = i2+1; j2 < blockSize; j2++) + { + tmp = B[j*blockSize + i2][i*blockSize + j2]; + B[j*blockSize + i2][i*blockSize + j2] = B[j*blockSize + j2][i*blockSize + i2]; B[j*blockSize + j2][i*blockSize + i2] = tmp; } } |
