Bugfix: Really fix the crash in bm.c, do memory checking after each allocation, corre...
[2dmatching.git] / code.c
blob1e5b43196b6aedc68f418139dded295730ae7c7e
1 #include "code.h"
3 int main(int argc, char *argv[])
5 double t1, t2, t3 = 0;
7 int i;
9 int times, m, n;
11 if( argc != 4) {
12 printf("Please provide pattern, text and loop sizes!\n");
13 exit(1);
15 else {
16 m = atoi(argv[1]);
17 n = atoi(argv[2]);
18 times = atoi(argv[3]);
21 MPI_Init( &argc, &argv );
23 //print_pattern();
25 /* Allocate text and pattern */
26 char **text = ( char ** )malloc( n * sizeof( char * ));
28 if( text == NULL ) {
29 printf("Failed to allocate array!\n");
30 exit(1);
33 for( i = 0; i < n; i++ ) {
34 text[i] = ( char * )malloc( n * sizeof( char ));
36 if( text[i] == NULL ) {
37 printf("Failed to allocate array!\n");
38 exit(1);
42 char **pattern = ( char ** )malloc( m * sizeof( char * ));
44 if( pattern == NULL ) {
45 printf("Failed to allocate array!\n");
46 exit(1);
49 for( i = 0; i < m; i++ ) {
50 pattern[i] = ( char * )malloc( m * sizeof( char ));
52 if( pattern[i] == NULL ) {
53 printf("Failed to allocate array!\n");
54 exit(1);
58 printf("Executing all algorithms %i times for m = %i and n = %i\n",times, m, n);
60 for (i = 0; i < times; i++) {
61 create_files( m , n, ALPHABET_SIZE );
62 load_files( text, pattern, m, n );
63 t1 = MPI_Wtime();
64 naive( text, pattern, m, n );
65 t2 = MPI_Wtime();
66 t3 += t2 - t1;
69 printf("Average elapsed time for naive: %f\n", t3/times);
71 t3 = 0;
73 for (i = 0; i < times; i++) {
74 create_files( m , n, ALPHABET_SIZE );
75 load_files( text, pattern, m, n );
76 t1 = MPI_Wtime();
77 karp( text, pattern, m, n );
78 t2 = MPI_Wtime();
79 t3 += t2 - t1;
82 printf("Average elapsed time for karp: %f\n", t3/times);
84 t3 = 0;
86 for (i = 0; i < times; i++) {
87 create_files( m , n, ALPHABET_SIZE );
88 load_files( text, pattern, m, n );
89 t1 = MPI_Wtime();
90 zhu( text, pattern, m, n, 1 );
91 t2 = MPI_Wtime();
92 t3 += t2 - t1;
95 printf("Average elapsed time for zhu1: %f\n", t3/times);
97 t3 = 0;
99 for (i = 0; i < times; i++) {
100 create_files( m , n, ALPHABET_SIZE );
101 load_files( text, pattern, m, n );
102 t1 = MPI_Wtime();
103 zhu( text, pattern, m, n, 2 );
104 t2 = MPI_Wtime();
105 t3 += t2 - t1;
108 printf("Average elapsed time for zhu2: %f\n", t3/times);
110 t3 = 0;
112 for (i = 0; i < times; i++) {
113 create_files( m , n, ALPHABET_SIZE );
114 load_files( text, pattern, m, n );
115 t1 = MPI_Wtime();
116 bird( text, pattern, m, n );
117 t2 = MPI_Wtime();
118 t3 += t2 - t1;
121 printf("Average elapsed time for bird1: %f\n", t3/times);
123 t3 = 0;
125 for (i = 0; i < times; i++) {
126 create_files( m , n, ALPHABET_SIZE );
127 load_files( text, pattern, m, n );
128 t1 = MPI_Wtime();
129 bird2( text, pattern, m, n );
130 t2 = MPI_Wtime();
131 t3 += t2 - t1;
134 printf("Average elapsed time for bird2: %f\n", t3/times);
136 t3 = 0;
138 for (i = 0; i < times; i++) {
139 create_files( m , n, ALPHABET_SIZE );
140 load_files( text, pattern, m, n );
141 t1 = MPI_Wtime();
142 baeza( text, pattern, m, n );
143 t2 = MPI_Wtime();
144 t3 += t2 - t1;
147 printf("Average elapsed time for baeza1: %f\n", t3/times);
149 t3 = 0;
151 for (i = 0; i < times; i++) {
152 create_files( m , n, ALPHABET_SIZE );
153 load_files( text, pattern, m, n );
154 t1 = MPI_Wtime();
155 baeza2( text, pattern, m, n );
156 t2 = MPI_Wtime();
157 t3 += t2 - t1;
160 printf("Average elapsed time for baeza2: %f\n", t3/times);
162 t3 = 0;
164 MPI_Finalize();
166 //Deallocate text and pattern
167 for( i = 0; i < n; i++)
168 free( text[i] );
170 free( text );
172 for( i = 0; i < m; i++)
173 free( pattern[i] );
175 free( pattern );
177 return 0;