Compare commits
No commits in common. "03b8986ce54ec99a27aa840343691aa72cf6f97a" and "5bf2639c79047b29691939407e7405a045a149a8" have entirely different histories.
03b8986ce5
...
5bf2639c79
|
@ -1 +0,0 @@
|
||||||
*.tmp
|
|
BIN
anna-handin.tar
BIN
anna-handin.tar
Binary file not shown.
|
@ -0,0 +1,174 @@
|
||||||
|
/**
|
||||||
|
* Groupmembers:
|
||||||
|
* 1. Anna Schlittenhardt
|
||||||
|
* 2. Tuan-Dat Tran
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include "cachelab.h"
|
||||||
|
|
||||||
|
int v = 0; /* verbose */
|
||||||
|
int s = 0; /* set index */
|
||||||
|
int E = 0; /* Set of cache lines */
|
||||||
|
int b = 0; /* Block offset */
|
||||||
|
int S; /* Set of Set of cache lines*/
|
||||||
|
int B; /* Block size */
|
||||||
|
long long time = 0;
|
||||||
|
FILE *tracefile; /* File to trace from */
|
||||||
|
struct cache_line **cache; /* cache */
|
||||||
|
|
||||||
|
int hit = 0, miss = 0, eviction = 0;
|
||||||
|
|
||||||
|
struct cache_line {
|
||||||
|
unsigned char v;
|
||||||
|
unsigned int tag;
|
||||||
|
unsigned int time;
|
||||||
|
};
|
||||||
|
|
||||||
|
void print_help() {
|
||||||
|
printf("Usage: ./csim-ref [-hv] -s <s> -E <E> -b <b> -t <tracefile>\n");
|
||||||
|
printf(" -h: Optional help flag that prints usage info\n");
|
||||||
|
printf(" -v: Optional verbose flag that displays trace info\n");
|
||||||
|
printf(" -s <s>: Number of set index bits (S = 2 s is the number of sets)\n");
|
||||||
|
printf(" -E <E>: Associativity (number of lines per set)\n");
|
||||||
|
printf(" -b <b>: Number of block bits (B = 2 b is the block size)\n");
|
||||||
|
printf(" -t <tracefile>: Name of the valgrind trace to replay\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void init() {
|
||||||
|
cache = (struct cache_line **) malloc(S*sizeof(struct cache_line *));
|
||||||
|
for (int i = 0; i < S; i++) {
|
||||||
|
struct cache_line* cache_set = (struct cache_line *) malloc(E*sizeof(struct cache_line));
|
||||||
|
cache[i] = cache_set;
|
||||||
|
for (int j = 0; j < E; j++) {
|
||||||
|
cache_set[j].v = 0;
|
||||||
|
cache_set[j].tag = 0;
|
||||||
|
cache_set[j].time = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void clean() {
|
||||||
|
for (int i = 0; i < S; i++) {
|
||||||
|
free(cache[i]);
|
||||||
|
}
|
||||||
|
free(cache);
|
||||||
|
fclose(tracefile);
|
||||||
|
}
|
||||||
|
|
||||||
|
void accessMem (int addr) {
|
||||||
|
unsigned int set = ((addr >> b) & ((1LL << s) - 1));
|
||||||
|
unsigned int tag = addr >> (b + s);
|
||||||
|
struct cache_line *cache_set = cache[set];
|
||||||
|
long evic_time = 0;
|
||||||
|
int evic_line = 0;
|
||||||
|
for (int i = 0; i < E; i++) {
|
||||||
|
if (cache_set[i].tag == tag && cache_set[i].v != 0){
|
||||||
|
if (v) { printf("hit "); }
|
||||||
|
hit++;
|
||||||
|
cache_set[i].time = time;
|
||||||
|
time++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (v) { printf("miss "); }
|
||||||
|
miss++;
|
||||||
|
|
||||||
|
for (int i = 0; i < E; i++) {
|
||||||
|
if (cache_set[i].time < evic_time) {
|
||||||
|
evic_line = i;
|
||||||
|
evic_time = cache_set[i].time;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cache_set[evic_line].v == 1) {
|
||||||
|
if (v) { printf("eviction "); }
|
||||||
|
eviction++;
|
||||||
|
}
|
||||||
|
|
||||||
|
cache_set[evic_line].v = 1;
|
||||||
|
cache_set[evic_line].tag = tag;
|
||||||
|
cache_set[evic_line].time = time;
|
||||||
|
time++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void trace() {
|
||||||
|
char op;
|
||||||
|
unsigned address;
|
||||||
|
int size;
|
||||||
|
|
||||||
|
while (fscanf(tracefile, " %c %x,%d", &op, &address, &size) > 0 ) {
|
||||||
|
switch (op) {
|
||||||
|
case 'M':
|
||||||
|
if (v) { printf("%c %x,%d ", op, address, size); }
|
||||||
|
accessMem(address);
|
||||||
|
accessMem(address);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
if (v) { printf("%c %x,%d ", op, address, size); }
|
||||||
|
accessMem(address);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
if (v) { printf("%c %x,%d ", op, address, size); }
|
||||||
|
accessMem(address);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
char c;
|
||||||
|
while ((c = getopt(argc, argv, "s:E:b:t:vh")) != -1) {
|
||||||
|
switch (c) {
|
||||||
|
case 'h':
|
||||||
|
print_help();
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
v = 1;
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
s = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'E':
|
||||||
|
E = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
b = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
tracefile = fopen(optarg, "r");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s == 0 || E == 0 || b == 0 || tracefile == NULL) {
|
||||||
|
print_help();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
S = pow(2, s);
|
||||||
|
B = pow(2, b);
|
||||||
|
|
||||||
|
init();
|
||||||
|
trace();
|
||||||
|
for (int i = 0; i < S; i++) {
|
||||||
|
for (int j = 0; j < E; j++) {
|
||||||
|
// printf("cache[%d][%d]: %c %x %ul\n", i, j, cache[i][j].v, cache[i][j].tag, cache[i][j].time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clean();
|
||||||
|
|
||||||
|
printSummary(hit, miss, eviction);
|
||||||
|
return 0;
|
||||||
|
}
|
16
src/csim.c
16
src/csim.c
|
@ -10,7 +10,6 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <limits.h>
|
|
||||||
#include "cachelab.h"
|
#include "cachelab.h"
|
||||||
|
|
||||||
int v = 0; /* verbose */
|
int v = 0; /* verbose */
|
||||||
|
@ -42,9 +41,9 @@ void print_help() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void init() {
|
void init() {
|
||||||
cache = (struct cache_line **) malloc(S * sizeof(struct cache_line *));
|
cache = (struct cache_line **) malloc(S*sizeof(struct cache_line *));
|
||||||
for (int i = 0; i < S; i++) {
|
for (int i = 0; i < S; i++) {
|
||||||
struct cache_line* cache_set = (struct cache_line *) malloc(E * sizeof(struct cache_line));
|
struct cache_line* cache_set = (struct cache_line *) malloc(E*sizeof(struct cache_line));
|
||||||
cache[i] = cache_set;
|
cache[i] = cache_set;
|
||||||
for (int j = 0; j < E; j++) {
|
for (int j = 0; j < E; j++) {
|
||||||
cache_set[j].v = 0;
|
cache_set[j].v = 0;
|
||||||
|
@ -65,13 +64,11 @@ void clean() {
|
||||||
void accessMem (int addr) {
|
void accessMem (int addr) {
|
||||||
unsigned int set = ((addr >> b) & ((1LL << s) - 1));
|
unsigned int set = ((addr >> b) & ((1LL << s) - 1));
|
||||||
unsigned int tag = addr >> (b + s);
|
unsigned int tag = addr >> (b + s);
|
||||||
|
|
||||||
struct cache_line *cache_set = cache[set];
|
struct cache_line *cache_set = cache[set];
|
||||||
unsigned long evic_time = ULONG_MAX;
|
unsigned long evic_time = 0;
|
||||||
unsigned int evic_line = 0;
|
unsigned int evic_line = 0;
|
||||||
|
|
||||||
for (int i = 0; i < E; i++) {
|
for (int i = 0; i < E; i++) {
|
||||||
if (cache_set[i].tag == tag && cache_set[i].v == 1){
|
if (cache_set[i].tag == tag && cache_set[i].v != 0){
|
||||||
if (v) { printf("hit "); }
|
if (v) { printf("hit "); }
|
||||||
hit++;
|
hit++;
|
||||||
cache_set[i].time = time;
|
cache_set[i].time = time;
|
||||||
|
@ -167,6 +164,11 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
init();
|
init();
|
||||||
trace();
|
trace();
|
||||||
|
for (int i = 0; i < S; i++) {
|
||||||
|
for (int j = 0; j < E; j++) {
|
||||||
|
// printf("cache[%d][%d]: %c %x %ul\n", i, j, cache[i][j].v, cache[i][j].tag, cache[i][j].time);
|
||||||
|
}
|
||||||
|
}
|
||||||
clean();
|
clean();
|
||||||
|
|
||||||
printSummary(hit, miss, eviction);
|
printSummary(hit, miss, eviction);
|
||||||
|
|
|
@ -0,0 +1,219 @@
|
||||||
|
S 600aa0,1 miss
|
||||||
|
S 7ff000398,8 miss
|
||||||
|
S 7ff000390,8 hit
|
||||||
|
S 7ff000378,8 miss
|
||||||
|
S 7ff000370,8 hit
|
||||||
|
S 7ff000384,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
S 7ff000388,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a20,4 miss
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a60,4 miss
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a24,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a70,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a28,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a80,4 miss
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a2c,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a90,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
M 7ff000384,4 hit hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
S 7ff000388,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a30,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a64,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a34,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a74,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a38,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a84,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a3c,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a94,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
M 7ff000384,4 hit hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
S 7ff000388,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a40,4 miss
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a68,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a44,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a78,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a48,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a88,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a4c,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a98,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
M 7ff000384,4 hit hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
S 7ff000388,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a50,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a6c,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a54,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a7c,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a58,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a8c,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000378,8 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 600a5c,4 hit
|
||||||
|
S 7ff00038c,4 hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
L 7ff000370,8 hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff00038c,4 hit
|
||||||
|
S 600a9c,4 hit
|
||||||
|
M 7ff000388,4 hit hit
|
||||||
|
L 7ff000388,4 hit
|
||||||
|
M 7ff000384,4 hit hit
|
||||||
|
L 7ff000384,4 hit
|
||||||
|
L 7ff000390,8 hit
|
||||||
|
L 7ff000398,8 hit
|
||||||
|
L 600aa0,1 hit
|
||||||
|
hits:231 misses:7 evictions:0
|
94
src/trans.c
94
src/trans.c
|
@ -17,6 +17,7 @@
|
||||||
#include "cachelab.h"
|
#include "cachelab.h"
|
||||||
|
|
||||||
int is_transpose(int M, int N, int A[N][M], int B[M][N]);
|
int is_transpose(int M, int N, int A[N][M], int B[M][N]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* transpose_submit - This is the solution transpose function that you
|
* transpose_submit - This is the solution transpose function that you
|
||||||
* will be graded on for Part B of the assignment. Do not change
|
* will be graded on for Part B of the assignment. Do not change
|
||||||
|
@ -27,93 +28,6 @@ int is_transpose(int M, int N, int A[N][M], int B[M][N]);
|
||||||
char transpose_submit_desc[] = "Transpose submission";
|
char transpose_submit_desc[] = "Transpose submission";
|
||||||
void transpose_submit(int M, int N, int A[N][M], int B[M][N])
|
void transpose_submit(int M, int N, int A[N][M], int B[M][N])
|
||||||
{
|
{
|
||||||
|
|
||||||
int blocksize=0;
|
|
||||||
switch (N)
|
|
||||||
{
|
|
||||||
case 32:
|
|
||||||
blocksize = 8;
|
|
||||||
break;
|
|
||||||
case 64:
|
|
||||||
blocksize = 4;
|
|
||||||
break;
|
|
||||||
case 67:
|
|
||||||
blocksize = 18;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(N == 32){
|
|
||||||
int n, m, nn, mm, diag_pos, diag_value;
|
|
||||||
|
|
||||||
for (n=0; n<N;n+=blocksize){
|
|
||||||
for (m=0;m<M; m+=blocksize){
|
|
||||||
|
|
||||||
for(nn=n; nn<n+blocksize;nn++){
|
|
||||||
for(mm=m; mm<m+blocksize;mm++){
|
|
||||||
|
|
||||||
if(nn!=mm){
|
|
||||||
B[mm][nn] = A[nn][mm];
|
|
||||||
}else{
|
|
||||||
diag_pos = nn;
|
|
||||||
diag_value = A[nn][mm];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(n==m){
|
|
||||||
B[diag_pos][diag_pos]= diag_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if(N == 64){
|
|
||||||
int n, m, nn, mm, diag_pos, diag_value;
|
|
||||||
|
|
||||||
for (n=0; n<N;n+=blocksize){
|
|
||||||
for (m=0;m<M; m+=blocksize){
|
|
||||||
|
|
||||||
for(nn=n; nn<n+blocksize;nn++){
|
|
||||||
for(mm=m; mm<m+blocksize;mm++){
|
|
||||||
|
|
||||||
if(nn!=mm){
|
|
||||||
B[mm][nn] = A[nn][mm];
|
|
||||||
}else{
|
|
||||||
diag_pos = nn;
|
|
||||||
diag_value = A[nn][mm];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(n==m){
|
|
||||||
B[diag_pos][diag_pos]= diag_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(N == 67){
|
|
||||||
int n, m, nn, mm, diag_pos, diag_value;
|
|
||||||
|
|
||||||
for (n=0; n<N;n+=blocksize){
|
|
||||||
for (m=0;m<M; m+=blocksize){
|
|
||||||
|
|
||||||
for(nn=n; (nn<n+blocksize)&&(nn<N);nn++){
|
|
||||||
for(mm=m; (mm<m+blocksize)&&(mm<M);mm++){
|
|
||||||
|
|
||||||
if(nn!=mm){
|
|
||||||
B[mm][nn] = A[nn][mm];
|
|
||||||
}else{
|
|
||||||
diag_pos = nn;
|
|
||||||
diag_value = A[nn][mm];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(n==m){
|
|
||||||
B[diag_pos][diag_pos]= diag_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -124,7 +38,7 @@ void transpose_submit(int M, int N, int A[N][M], int B[M][N])
|
||||||
/*
|
/*
|
||||||
* trans - A simple baseline transpose function, not optimized for the cache.
|
* trans - A simple baseline transpose function, not optimized for the cache.
|
||||||
*/
|
*/
|
||||||
/*char trans_desc[] = "Simple row-wise scan transpose";
|
char trans_desc[] = "Simple row-wise scan transpose";
|
||||||
void trans(int M, int N, int A[N][M], int B[M][N])
|
void trans(int M, int N, int A[N][M], int B[M][N])
|
||||||
{
|
{
|
||||||
int i, j, tmp;
|
int i, j, tmp;
|
||||||
|
@ -136,7 +50,7 @@ void trans(int M, int N, int A[N][M], int B[M][N])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* registerFunctions - This function registers your transpose
|
* registerFunctions - This function registers your transpose
|
||||||
|
@ -151,7 +65,7 @@ void registerFunctions()
|
||||||
registerTransFunction(transpose_submit, transpose_submit_desc);
|
registerTransFunction(transpose_submit, transpose_submit_desc);
|
||||||
|
|
||||||
/* Register any additional transpose functions */
|
/* Register any additional transpose functions */
|
||||||
//registerTransFunction(trans, trans_desc);
|
registerTransFunction(trans, trans_desc);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,219 @@
|
||||||
|
S 600aa0,1 miss
|
||||||
|
I 4005b6,5 I 4005bb,5 I 4005c0,5 S 7ff000398,8 miss
|
||||||
|
I 40051e,1 S 7ff000390,8 hit
|
||||||
|
I 40051f,3 I 400522,4 S 7ff000378,8 miss
|
||||||
|
I 400526,4 S 7ff000370,8 hit
|
||||||
|
I 40052a,7 S 7ff000384,4 hit
|
||||||
|
I 400531,2 I 400581,4 L 7ff000384,4 hit
|
||||||
|
I 400585,2 I 400533,7 S 7ff000388,4 hit
|
||||||
|
I 40053a,2 I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a20,4 miss
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a60,4 miss
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a24,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a70,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a28,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a80,4 miss
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a2c,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a90,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40057d,4 M 7ff000384,4 hit
|
||||||
|
I 400581,4 L 7ff000384,4 hit
|
||||||
|
I 400585,2 I 400533,7 S 7ff000388,4 hit
|
||||||
|
I 40053a,2 I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a30,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a64,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a34,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a74,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a38,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a84,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a3c,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a94,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40057d,4 M 7ff000384,4 hit
|
||||||
|
I 400581,4 L 7ff000384,4 hit
|
||||||
|
I 400585,2 I 400533,7 S 7ff000388,4 hit
|
||||||
|
I 40053a,2 I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a40,4 miss
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a68,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a44,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a78,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a48,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a88,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a4c,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a98,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40057d,4 M 7ff000384,4 hit
|
||||||
|
I 400581,4 L 7ff000384,4 hit
|
||||||
|
I 400585,2 I 400533,7 S 7ff000388,4 hit
|
||||||
|
I 40053a,2 I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a50,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a6c,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a54,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a7c,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a58,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a8c,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40053c,3 L 7ff000384,4 hit
|
||||||
|
I 40053f,2 I 400541,4 I 400545,3 I 400548,4 L 7ff000378,8 hit
|
||||||
|
I 40054c,3 L 7ff000388,4 hit
|
||||||
|
I 40054f,2 I 400551,3 L 600a5c,4 hit
|
||||||
|
I 400554,3 S 7ff00038c,4 hit
|
||||||
|
I 400557,3 L 7ff000388,4 hit
|
||||||
|
I 40055a,2 I 40055c,4 I 400560,3 I 400563,4 L 7ff000370,8 hit
|
||||||
|
I 400567,3 L 7ff000384,4 hit
|
||||||
|
I 40056a,3 I 40056d,3 L 7ff00038c,4 hit
|
||||||
|
I 400570,3 S 600a9c,4 hit
|
||||||
|
I 400573,4 M 7ff000388,4 hit
|
||||||
|
I 400577,4 L 7ff000388,4 hit
|
||||||
|
I 40057b,2 I 40057d,4 M 7ff000384,4 hit
|
||||||
|
I 400581,4 L 7ff000384,4 hit
|
||||||
|
I 400585,2 I 400587,1 L 7ff000390,8 hit
|
||||||
|
I 400588,1 L 7ff000398,8 hit
|
||||||
|
I 4005c5,7 L 600aa0,1 hit
|
||||||
|
hits:211 misses:7 evictions:0
|
BIN
tuan-handin.tar
BIN
tuan-handin.tar
Binary file not shown.
Loading…
Reference in New Issue