summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Nehls <nehls@mi.fu-berlin.de>2011-05-21 14:53:01 +0200
committerRobin Nehls <nehls@mi.fu-berlin.de>2011-05-21 14:53:01 +0200
commitef62382005c5f9c97bc472b73cd13e87778b7adf (patch)
treef5db2bb4a6c3aa1afbde7d518829224271e96cff
parent4d877a521588edf342c36c41c1437158c6617621 (diff)
parentc630a1b07403339ab3ce74cc10798cd0353230ad (diff)
downloadmanycore-ef62382005c5f9c97bc472b73cd13e87778b7adf.tar.gz
manycore-ef62382005c5f9c97bc472b73cd13e87778b7adf.tar.bz2
manycore-ef62382005c5f9c97bc472b73cd13e87778b7adf.zip
merged cacheRows and added my own version
-rw-r--r--cacheRows.c52
-rw-r--r--cacheRows2.c33
2 files changed, 61 insertions, 24 deletions
diff --git a/cacheRows.c b/cacheRows.c
index 08b8142..c75be89 100644
--- a/cacheRows.c
+++ b/cacheRows.c
@@ -3,31 +3,35 @@
#include <stdlib.h>
#define MEASURE_METHOD optmemmeasure
-#define FIELD_SIZE 20000
+#define RUNS 10000
+#define MIN_OFFSET 1
+#define MAX_OFFSET 512
+#define OFFSETS (MAX_OFFSET - MIN_OFFSET)
+#define FIELD_TYPE uint8_t
+
+void measure(int offset,FIELD_TYPE *field){
+ void *lowerAddress = field + offset;
+ int i;
+
+ for(i=MIN_OFFSET;i <= MAX_OFFSET;i++){
+ uint64_t time = MEASURE_METHOD(lowerAddress,i*sizeof(FIELD_TYPE));
+ //if (time > 128 && time < 10000)
+ fprintf(stdout,"%d %lld \r\n",i,time);
+ }
+}
int main(int argc, char* argv[]) {
-
- char *field = malloc(FIELD_SIZE);
- int i,j;
- uint64_t time=0;
-
- // fill array with crap
- for (i=0;i < FIELD_SIZE; ++i) {
- field[i]=(i+2342) % 255;
- }
-
- for(i=0; i<FIELD_SIZE; ++i) {
- time=optmemmeasure(field,i);
- if (time < 1000)
- fprintf(stdout,"%d %lld\n",i,time);
-
- // scrambeled eggs
- for (j=0;j<FIELD_SIZE-1;++j) {
- field[i]=(field[i]*field[i+1]) % 255;
- }
- field[FIELD_SIZE-1] = (field[FIELD_SIZE-1]*field[0]) % 255;
- }
-
- return 0;
+
+ //uint64_t *results = malloc(sizeof(uint64_t)*RUNS*OFFSETS);
+ FIELD_TYPE *field = malloc(sizeof(FIELD_TYPE)*(MAX_OFFSET+1));
+ int i=0;
+
+ //for(i=0;i < RUNS;i++){
+ //fprintf(stdout,"RUN: %d \r\n",i);
+ measure(0,field);
+ //}
+
+
+ return 0;
}
diff --git a/cacheRows2.c b/cacheRows2.c
new file mode 100644
index 0000000..08b8142
--- /dev/null
+++ b/cacheRows2.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include "inlineasm.h"
+#include <stdlib.h>
+
+#define MEASURE_METHOD optmemmeasure
+#define FIELD_SIZE 20000
+
+int main(int argc, char* argv[]) {
+
+ char *field = malloc(FIELD_SIZE);
+ int i,j;
+ uint64_t time=0;
+
+ // fill array with crap
+ for (i=0;i < FIELD_SIZE; ++i) {
+ field[i]=(i+2342) % 255;
+ }
+
+ for(i=0; i<FIELD_SIZE; ++i) {
+ time=optmemmeasure(field,i);
+ if (time < 1000)
+ fprintf(stdout,"%d %lld\n",i,time);
+
+ // scrambeled eggs
+ for (j=0;j<FIELD_SIZE-1;++j) {
+ field[i]=(field[i]*field[i+1]) % 255;
+ }
+ field[FIELD_SIZE-1] = (field[FIELD_SIZE-1]*field[0]) % 255;
+ }
+
+ return 0;
+}
+