aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-07-22 10:38:44 +0000
committer_ov4 <ov4@ov4.org>2026-07-22 10:38:44 +0000
commitbec2926ad814415235905d60cd6dab408225687c (patch)
tree579277ed3de26532a583a8105716190f30859a09
parent4c3db4aa74348d5cf41c43140d2a59d6fe2c8374 (diff)
better
-rw-r--r--cachelab-handout/trans.c22
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;
}
}