|
|
- /*
- * cachelab.c - Cache Lab helper functions
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
- #include "cachelab.h"
- #include <time.h>
-
- trans_func_t func_list[MAX_TRANS_FUNCS];
- int func_counter = 0;
-
- /*
- * printSummary - Summarize the cache simulation statistics. Student cache simulators
- * must call this function in order to be properly autograded.
- */
- void printSummary(int hits, int misses, int evictions)
- {
- printf("hits:%d misses:%d evictions:%d\n", hits, misses, evictions);
- FILE* output_fp = fopen(".csim_results", "w");
- assert(output_fp);
- fprintf(output_fp, "%d %d %d\n", hits, misses, evictions);
- fclose(output_fp);
- }
-
- /*
- * initMatrix - Initialize the given matrix
- */
- void initMatrix(int M, int N, int A[N][M], int B[M][N])
- {
- int i, j;
- srand(time(NULL));
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- // A[i][j] = i+j; /* The matrix created this way is symmetric */
- A[i][j]=rand();
- B[j][i]=rand();
- }
- }
- }
-
- void randMatrix(int M, int N, int A[N][M]) {
- int i, j;
- srand(time(NULL));
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- // A[i][j] = i+j; /* The matrix created this way is symmetric */
- A[i][j]=rand();
- }
- }
- }
-
- /*
- * correctTrans - baseline transpose function used to evaluate correctness
- */
- void correctTrans(int M, int N, int A[N][M], int B[M][N])
- {
- int i, j, tmp;
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- tmp = A[i][j];
- B[j][i] = tmp;
- }
- }
- }
-
-
-
- /*
- * registerTransFunction - Add the given trans function into your list
- * of functions to be tested
- */
- void registerTransFunction(void (*trans)(int M, int N, int[N][M], int[M][N]),
- char* desc)
- {
- func_list[func_counter].func_ptr = trans;
- func_list[func_counter].description = desc;
- func_list[func_counter].correct = 0;
- func_list[func_counter].num_hits = 0;
- func_list[func_counter].num_misses = 0;
- func_list[func_counter].num_evictions =0;
- func_counter++;
- }
|