- Timestamp:
- Mar 9, 2011, 4:11:43 PM (14 years ago)
- Location:
- trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft
- Files:
-
- 4 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/Makefile
r134 r140 1 ADD_OBJS = stdio.o stdlib.o exception.o system.o \ 2 $(patsubst %.c,%.o,$(wildcard *.c)) \ 3 $(patsubst common/%.c,common/%.o,$(wildcard common/*.c)) \ 4 $(patsubst irq/%.c,irq/%.o,$(wildcard irq/*.c)) \ 5 $(patsubst benchmark/%.c,benchmark/%.o,$(wildcard benchmark/*.c)) \ 1 ADD_OBJS = \ 2 $(patsubst self_code_modifying/%.c,self_code_modifying/%.o,$(wildcard self_code_modifying/*.c)) \ 6 3 $(patsubst matrix_multiplication/%.c,matrix_multiplication/%.o,$(wildcard matrix_multiplication/*.c)) \ 7 4 $(patsubst sort/%.c,sort/%.o,$(wildcard sort/*.c)) \ 8 $(patsubst dhrystone/%.c,dhrystone/%.o,$(wildcard dhrystone/*.c)) 5 $(patsubst dhrystone/%.c,dhrystone/%.o,$(wildcard dhrystone/*.c)) \ 6 $(patsubst benchmark/%.c,benchmark/%.o,$(wildcard benchmark/*.c)) \ 7 $(patsubst irq/%.c,irq/%.o,$(wildcard irq/*.c)) \ 8 $(patsubst common/%.c,common/%.o,$(wildcard common/*.c)) \ 9 $(patsubst %.c,%.o,$(wildcard *.c)) \ 10 stdio.o stdlib.o exception.o system.o 11 9 12 10 13 ADD_CFLAGS = 14 ADD_LDFLAGS = 11 15 SOCLIB ?= $(shell soclib-cc --getpath) 12 16 -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark.c
r134 r140 6 6 void benchmark (void) 7 7 { 8 /* if(procnum() != 0) */ 9 /* EXIT(0); */ 10 11 int result = 0; 8 int result = 0; 9 int num_cpu = procnum(); 12 10 int cycle_begin = cycle_begin = cpu_cycles(); 13 14 switch (procnum()) 15 { 16 default : 17 { 11 12 if (num_cpu < BENCHMARK_NB_THREAD) 13 switch (num_cpu) 14 { 15 default : 16 { 18 17 #if BENCHMARK_MATRIX_MULTIPLICATION_MT 19 int result_mm_mt = benchmark_matrix_multiplication_mt();20 result += result_mm_mt;18 int result_mm_mt = benchmark_matrix_multiplication_mt(); 19 result += result_mm_mt; 21 20 #endif 22 21 #if BENCHMARK_DHRYSTONE 23 int result_dhrystone = benchmark_dhrystone();24 result += result_dhrystone;22 int result_dhrystone = benchmark_dhrystone(); 23 result += result_dhrystone; 25 24 #endif 26 #if BENCHMARK_SORT 27 int result_sort = benchmark_sort(); 28 result += result_sort; 25 #if BENCHMARK_SORT_ALL 26 int result_sort_all = benchmark_sort_all(); 27 result += result_sort_all; 28 #endif 29 #if BENCHMARK_SORT_BUBBLE 30 int result_sort_bubble = benchmark_sort_bubble(); 31 result += result_sort_bubble; 32 #endif 33 #if BENCHMARK_SORT_INSERTION 34 int result_sort_insertion = benchmark_sort_insertion(); 35 result += result_sort_insertion; 36 #endif 37 #if BENCHMARK_SORT_SELECTION 38 int result_sort_selection = benchmark_sort_selection(); 39 result += result_sort_selection; 40 #endif 41 #if BENCHMARK_SORT_SHELL 42 int result_sort_shell = benchmark_sort_shell(); 43 result += result_sort_shell; 29 44 #endif 30 45 #if BENCHMARK_MATRIX_MULTIPLICATION_ST 31 int result_mm_st = benchmark_matrix_multiplication_st();32 result += result_mm_st;46 int result_mm_st = benchmark_matrix_multiplication_st(); 47 result += result_mm_st; 33 48 #endif 34 35 printf("\n"); 36 printf("--------------------------------\n"); 37 printf( "Partial results :\n"); 49 #if BENCHMARK_SELF_CODE_MODIFYING 50 int result_self_code_modifying = benchmark_self_code_modifying(); 51 result += result_self_code_modifying; 52 #endif 53 54 printf("\n"); 55 printf("--------------------------------\n"); 56 printf( "Partial results :\n"); 38 57 #if BENCHMARK_MATRIX_MULTIPLICATION_MT 39 printf(" * MM MT: %d\n",result_mm_mt);58 printf(" * MM MT : %d\n",result_mm_mt); 40 59 #endif 41 60 #if BENCHMARK_DHRYSTONE 42 printf(" * DHRYSTONE: %d\n",result_dhrystone);61 printf(" * DHRYSTONE : %d\n",result_dhrystone); 43 62 #endif 44 #if BENCHMARK_SORT 45 printf(" * SORT : %d\n",result_sort); 63 #if BENCHMARK_SORT_ALL 64 printf(" * SORT_ALL : %d\n",result_sort_all); 65 #endif 66 #if BENCHMARK_SORT_BUBBLE 67 printf(" * SORT_BUBBLE : %d\n",result_sort_bubble); 68 #endif 69 #if BENCHMARK_SORT_INSERTION 70 printf(" * SORT_INSERTION : %d\n",result_sort_insertion); 71 #endif 72 #if BENCHMARK_SORT_SELECTION 73 printf(" * SORT_SELECTION : %d\n",result_sort_selection); 74 #endif 75 #if BENCHMARK_SORT_SHELL 76 printf(" * SORT_SHELL : %d\n",result_sort_shell); 46 77 #endif 47 78 #if BENCHMARK_MATRIX_MULTIPLICATION_ST 48 printf(" * MM ST: %d\n",result_mm_st);79 printf(" * MM ST : %d\n",result_mm_st); 49 80 #endif 50 printf("--------------------------------\n"); 51 break; 81 #if BENCHMARK_SELF_CODE_MODIFYING 82 printf(" * SELF_CODE_MODIFYING : %d\n",result_self_code_modifying); 83 #endif 84 printf("--------------------------------\n"); 85 break; 86 } 52 87 } 53 }54 88 55 89 printf("\n"); -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark.h
r134 r140 5 5 6 6 void benchmark (void); 7 int benchmark_sort (void); 7 int benchmark_sort_all (void); 8 int benchmark_sort_bubble (void); 9 int benchmark_sort_insert (void); 10 int benchmark_sort_selection (void); 11 int benchmark_sort_shell (void); 8 12 int benchmark_dhrystone (void); 9 13 int benchmark_matrix_multiplication_st(void); -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark_matrix_multiplication.c
r134 r140 127 127 /* matrix_multiplication_print(matrix_local_d, size); */ 128 128 129 #if VERIFICATION_MATRIX_MULTIPLICATION 129 130 printf(" * Verification... "); 130 131 131 132 benchmark_matrix_validation (matrix_local_d, size); 133 #endif 132 134 133 135 printf(" * Free...\n"); … … 230 232 if (matrix_nb_thread_stop == matrix_nb_thread_start) 231 233 { 234 #if VERIFICATION_MATRIX_MULTIPLICATION 232 235 printf(" * Verification... "); 233 236 234 237 benchmark_matrix_validation (matrix_global_d, size); 238 #endif 235 239 236 240 printf(" * Free...\n"); -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark_sort.c
r134 r140 9 9 static uint32_t sort_lock; 10 10 11 int _benchmark_sort (unsigned int size) 11 int _benchmark_sort (sort_t sort_type, 12 unsigned int size) 13 { 14 printf(" * Size : %d\n",size); 15 16 unsigned int* SortArray; 17 18 int cycle_begin; 19 20 int num_cpu=procnum(); 21 22 printf(" * Algo : %s\n",sort_str(sort_type)); 23 24 printf(" * Init...\n"); 25 26 lock_lock(&sort_lock); 27 SortArray = (unsigned int*) malloc(size*sizeof(unsigned int)); 28 lock_unlock(&sort_lock); 29 30 unsigned int seed = num_cpu; 31 int i; 32 for (i=0; i<size; ++i) 33 { 34 seed = seed * 1103515245 + 12345; 35 SortArray[i] = seed&0xff; 36 } 37 printf(" * Sort... \n"); 38 39 cycle_begin = cpu_cycles(); 40 sort((unsigned int *) (SortArray), (unsigned int) size, sort_type); 41 int cycle_exec = cpu_cycles()-cycle_begin; 42 43 printf(" * Executed in %d cycles\n",cycle_exec); 44 45 int result = cycle_exec; 46 47 #if VERIFICATION_SORT 48 printf(" * Verification... "); 49 50 for (i = 1; i < size; i++) 51 { 52 /* printf("%d ",SortArray[i-1]); */ 53 54 if (SortArray[i] < SortArray[i-1]) 55 { 56 printf("KO !!!\n"); 57 EXIT(1); 58 } 59 } 60 printf("OK\n"); 61 #endif 62 63 free (SortArray); 64 65 return result; 66 } 67 68 int _benchmark_sort_all (unsigned int size) 69 { 70 printf("\n"); 71 printf("================================\n"); 72 printf("Benchmark Sort (ALL)\n"); 73 printf("================================\n"); 74 printf("\n"); 75 76 int result = 0; 77 int num_cpu=procnum(); 78 sort_t _sort_type; 79 const sort_t nb_sort_type = 4; 80 81 for (_sort_type=0; _sort_type < nb_sort_type; _sort_type++) 82 result += _benchmark_sort((_sort_type+num_cpu)%nb_sort_type,size); 83 84 return result; 85 } 86 87 int _benchmark_sort_one (sort_t sort_type, 88 unsigned int size) 12 89 { 13 90 printf("\n"); … … 17 94 printf("\n"); 18 95 19 printf(" * Size : %d\n",size); 20 21 unsigned int* SortArray; 22 23 int cycle_begin, result; 24 25 result = 0; 26 27 int p=procnum(); 28 29 sort_t _sort_type; 30 const sort_t nb_sort_type = 4; 31 32 for (_sort_type=0; _sort_type < nb_sort_type; _sort_type++) 33 { 34 sort_t sort_type = (_sort_type+p)%nb_sort_type; 35 36 printf(" * Algo : %s\n",sort_str(sort_type)); 37 38 printf(" * Init...\n"); 39 40 lock_lock(&sort_lock); 41 SortArray = (unsigned int*) malloc(size*sizeof(unsigned int)); 42 lock_unlock(&sort_lock); 43 44 unsigned int seed = p; 45 int i; 46 for (i=0; i<size; ++i) 47 { 48 seed = seed * 1103515245 + 12345; 49 SortArray[i] = seed&0xff; 50 } 51 printf(" * Sort... \n"); 52 53 cycle_begin = cpu_cycles(); 54 sort((unsigned int *) (SortArray), (unsigned int) size, sort_type); 55 int cycle_exec = cpu_cycles()-cycle_begin; 56 57 printf(" * Executed in %d cycles\n",cycle_exec); 58 59 result += cycle_exec; 60 61 printf(" * Verification... "); 62 63 for (i = 1; i < size; i++) 64 { 65 /* printf("%d ",SortArray[i-1]); */ 66 67 if (SortArray[i] < SortArray[i-1]) 68 { 69 printf("KO !!!\n"); 70 EXIT(1); 71 } 72 } 73 printf("OK\n"); 74 75 free (SortArray); 76 77 } 78 79 return result; 96 return _benchmark_sort(sort_type,size); 80 97 } 81 98 82 int benchmark_sort (void) { return _benchmark_sort(SORT_SIZE); } 83 84 99 int benchmark_sort_all (void) { return _benchmark_sort_all(SORT_ALL_SIZE); } 100 int benchmark_sort_bubble (void) { return _benchmark_sort_one(SORT_BUBBLE ,SORT_BUBBLE_SIZE ); } 101 int benchmark_sort_insertion (void) { return _benchmark_sort_one(SORT_INSERTION,SORT_INSERTION_SIZE); } 102 int benchmark_sort_selection (void) { return _benchmark_sort_one(SORT_SELECTION,SORT_SELECTION_SIZE); } 103 int benchmark_sort_shell (void) { return _benchmark_sort_one(SORT_SHELL ,SORT_SHELL_SIZE ); } -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/common/common.c
r134 r140 41 41 } 42 42 43 pause(); 44 43 45 while(1); 44 46 } -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/define.h
r134 r140 3 3 4 4 // List of benchmark 5 #define BENCHMARK_NB_THREAD 4 6 5 7 #define BENCHMARK_DHRYSTONE 0 6 #define BENCHMARK_SORT 0 8 #define BENCHMARK_SORT_ALL 0 9 #define BENCHMARK_SORT_BUBBLE 0 10 #define BENCHMARK_SORT_INSERTION 0 11 #define BENCHMARK_SORT_SELECTION 0 12 #define BENCHMARK_SORT_SHELL 1 7 13 #define BENCHMARK_MATRIX_MULTIPLICATION_ST 0 8 #define BENCHMARK_MATRIX_MULTIPLICATION_MT 1 14 #define BENCHMARK_MATRIX_MULTIPLICATION_MT 0 15 #define BENCHMARK_SELF_CODE_MODIFYING 0 9 16 10 17 #define VERBOSE_SORT 0 11 18 19 #define VERIFICATION_SORT 0 20 #define VERIFICATION_MATRIX_MULTIPLICATION 0 21 12 22 // Benchmark size 13 23 #define DHRYSTONE_NB_RUNS 5000 14 #define SORT_SIZE 850 24 #define SORT_ALL_SIZE 1000 25 #define SORT_BUBBLE_SIZE 1500 26 #define SORT_INSERTION_SIZE 2300 27 #define SORT_SELECTION_SIZE 1600 28 #define SORT_SHELL_SIZE 4000 15 29 #define MATRIX_MULTIPLICATION_ST_SIZE 50 16 #define MATRIX_MULTIPLICATION_MT_SIZE 7530 #define MATRIX_MULTIPLICATION_MT_SIZE 96 17 31 #define MATRIX_MULTIPLICATION_MT_LOCK_BY_LINE 1 32 #define SELF_CODE_MODIFYING_NB_RUNS 10 18 33 19 34 // Timer configuration -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/dhrystone/dhry21a.c
r134 r140 76 76 DOUBLE dtime(); 77 77 78 One_Fifty Int_1_Loc ;79 REG One_Fifty Int_2_Loc ;78 One_Fifty Int_1_Loc = 0; 79 REG One_Fifty Int_2_Loc = 0; 80 80 One_Fifty Int_3_Loc; 81 81 REG char Ch_Index; -
trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/matrix_multiplication/matrix_multiplication.c
r134 r140 2 2 #include "stdio.h" 3 3 #include "system.h" 4 #include "stdint.h" 4 5 5 6 void matrix_multiplication_st (int ** a, … … 8 9 unsigned int n) 9 10 { 10 int x, y;11 uint32_t x, y; 11 12 12 13 for (x=0; x<n; ++x) … … 16 17 for (y=0; y<n; ++y) 17 18 { 18 int i;19 uint32_t i; 19 20 20 21 int tmp = 0; … … 28 29 } 29 30 30 static int lock;31 static int next;31 static uint32_t lock; 32 static uint32_t next; 32 33 33 34 void matrix_multiplication_mt (int ** a, … … 37 38 int lock_by_line) 38 39 { 39 int x, y;40 uint32_t x, y; 40 41 41 42 while (1)
Note: See TracChangeset
for help on using the changeset viewer.