/* * trans.c - Matrix transpose B = A^T * * Each transpose function must have a prototype of the form: * void trans(int M, int N, int A[N][M], int B[M][N]); * * A transpose function is evaluated by counting the number of misses * on a 1KB direct mapped cache with a block size of 32 bytes. */ #include #include "cachelab.h" int is_transpose(int M, int N, int A[N][M], int B[M][N]); void print_array(int M, int N, int A[N][M], int x, int y) { int i,j; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { if(i == y && j == x) printf("\x1B[31m # \x1B[0m"); else printf(" # "); } printf("\n"); } } void diff_array(int M, int N, int A[N][M], int B[M][N], int x, int y) { printf("%d, %d\n", x, y); print_array(M, N, A, x, y); printf("\n"); print_array(N, M, B, y, x); getchar(); } /* * transpose_submit - This is the solution transpose function that you * will be graded on for Part B of the assignment. Do not change * the description string "Transpose submission", as the driver * searches for that string to identify the transpose function to * be graded. */ char transpose_submit_desc[] = "Transpose submission"; void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { int blocksize = 8; //2^5/4 int i, j, k, diag, diagX, diagY; for(i=0; i