source: trunk/Softwares/SPECINT2000/src/c/benchmark.c @ 144

Last change on this file since 144 was 138, checked in by rosiere, 14 years ago

1) add counters_t type for interface
2) fix in check load in load_store_unit
3) add parameters (but not yet implemented)
4) change environment and add script (distcc_env.sh ...)
5) add warning if an unser change rename flag with l.mtspr instruction
6) ...

  • Property svn:keywords set to Id
File size: 15.3 KB
RevLine 
[117]1// $Id: benchmark.c 138 2010-05-12 17:34:01Z rosiere $
2
3#include <stdlib.h>
4#include <string.h>
5#include <stdio.h>
6
7#ifndef SPECINT2000_PATH
8# error "SPECINT2000_PATH must be defined"
9#endif
10
[138]11#if !defined(SPECINT2000_TEST) && !defined(SPECINT2000_TRAIN) && !defined(SPECINT2000_REF)
12# error "SPECINT2000_TEST, SPECINT2000_TRAIN or SPECINT2000_REF must be defined"
13#endif
[117]14
[138]15#if defined(SPECINT2000_TEST)
16# error "SPECINT2000_TEST not yet supported"
17#endif
18
19#if defined(SPECINT2000_REF)
20# error "SPECINT2000_REF not yet supported"
21#endif
22
23#ifdef SPEC_gzip
[119]24int main_164_gzip   (int argc, char * argv[]);
[138]25#endif
26#ifdef SPEC_vpr
[119]27int main_175_vpr    (int argc, char * argv[]);
[138]28#endif
29#ifdef SPEC_gcc
[119]30int main_176_gcc    (int argc, char * argv[]);
[138]31#endif
32#ifdef SPEC_mcf
[119]33int main_181_mcf    (int argc, char * argv[]);
[138]34#endif
35#ifdef SPEC_vortex
[119]36int main_255_vortex (int argc, char * argv[]);
[138]37#endif
38#ifdef SPEC_bzip
[119]39int main_256_bzip2  (int argc, char * argv[]);
[138]40#endif
41#ifdef SPEC_twolf
[119]42int main_300_twolf  (int argc, char * argv[]);
[138]43#endif
[119]44
[117]45//=======================================================================================
46//                                                                      [ run_none ]     
47//=======================================================================================
48void run_none ()
49{
50  printf("***** none *****\n");
51  return;
52}
53
54//=======================================================================================
55//                                                                  [ run_164_gzip ]
56//=======================================================================================
[138]57#ifdef SPECINT2000_TRAIN
58void main_164_gzip_train ()
59{
60#ifdef SPEC_gzip
[117]61  int     argc = 4;
62  char ** argv;
63
64  char  * execname        = "./gzip";
65  char  *_filename        = "/164.gzip/data/test/input/input.compressed";
66  char  * filename        = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_filename));
67  strcpy(filename,SPECINT2000_PATH); strcat(filename,_filename);
68  char  * input_size      = "1";
69  char  * compressed_size = "1";
70
71 // Create the arguments
72  if ((argc < 1) || (argc > 4) )
73    {
74      printf("Usage : gzip [filename] [intput_size] [compressed_size]\n");
75      return;
76    }
77   
78  argv    = (char **)malloc (argc * sizeof(char *));
79 
80  argv[0] = (char *) malloc (strlen(execname       ));
81  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
82
83  if (argc > 1)
84    {
85  argv[1] = (char *) malloc (strlen(filename       ));
86  argv[1] = memcpy(argv[1],filename        ,strlen(filename       ));
87    }
88 
89  if (argc > 2)
90    {
91  argv[2] = (char *) malloc (strlen(input_size     ));
92  argv[2] = memcpy(argv[2],input_size      ,strlen(input_size     ));
93    }
94
95  if (argc > 3)
96    { 
97  argv[3] = (char *) malloc (strlen(compressed_size));
98  argv[3] = memcpy(argv[3],compressed_size ,strlen(compressed_size));
99    }
100
101  // +-------------------+
102  // | Run the benchmark |
103  // +-------------------+
104  main_164_gzip (argc,argv);
105
106  free(filename);
[138]107#endif
108}
109#endif
110
111void run_164_gzip ()
112{
113  printf("***** 164.gzip - Begin *****\n");
114
115#ifdef SPECINT2000_TRAIN
116  main_164_gzip_train ();
117#endif
118
[117]119  printf("***** 164.gzip - End   *****\n");
[138]120}
[117]121
122//=======================================================================================
123//                                                                   [ run_175_vpr ]
124//=======================================================================================
[138]125
126#ifdef SPECINT2000_TRAIN
127void main_175_vpr_train ()
[117]128{
[138]129#ifdef SPEC_vpr
[117]130
131#define   nb_option_175_vpr 12
132  int     argc      = 5 + nb_option_175_vpr;
133  char ** argv;
134
135  char  * execname        = "./vpr";
136       
137  char  *_circuit_net     = "/175.vpr/data/test/input/net.in";
138  char  *_fpga_arch       = "/175.vpr/data/test/input/arch.in";
139  char  *_placed_out      = "/175.vpr/data/test/input/place.in";
140  char  *_routed_out      = "/175.vpr/data/test/input/route.out";
141       
142  char  * circuit_net     = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_circuit_net));
143  char  * fpga_arch       = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_fpga_arch  ));
144  char  * placed_out      = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_placed_out ));
145  char  * routed_out      = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_routed_out ));
146
147  strcpy(circuit_net,SPECINT2000_PATH); strcat(circuit_net,_circuit_net);
148  strcpy(fpga_arch  ,SPECINT2000_PATH); strcat(fpga_arch  ,_fpga_arch  );
149  strcpy(placed_out ,SPECINT2000_PATH); strcat(placed_out ,_placed_out );
150  strcpy(routed_out ,SPECINT2000_PATH); strcat(routed_out ,_routed_out );
151
152  /*
153  General Options: 
154  [-nodisp]
155  [-auto <int>]
156  [-route_only]
157  [-place_only]
158  [-aspect_ratio <float>]
159  [-nx <int>]
160  [-ny <int>]
161  [-full_stats]
162  [-fast]
163  [-timing_analysis on | off]
164
165  Placer Options:
166  [-init_t <float>]
167  [-exit_t <float>]
168  [-alpha_t <float>]
169  [-inner_num <float>]
170  [-seed <int>]
171  [-place_cost_exp <float>]
172  [-place_cost_type linear | nonlinear]
173  [-place_chan_width <int>]
174  [-num_regions <int>]
175  [-fix_pins random | <file.pads>]
176 
177  Router Options: 
178  [-max_router_iterations <int>]
179  [-bb_factor <int>]
180  [-initial_pres_fac <float>]
181  [-pres_fac_mult <float>]
182  [-acc_fac <float>]
183  [-first_iter_pres_fac <float>]
184  [-bend_cost <float>]
185  [-route_type global | detailed]
186  [-verify_binary_search]
187  [-route_chan_width <int>]
188  */
189
190  char * option [nb_option_175_vpr] = 
191    {
192      "-nodisp"              ,
193      "-route_only"          , 
194      "-route_chan_width"    , "15",
195      "-pres_fac_mult"       , "2" ,
196      "-acc_fac"             , "1" ,
197      "-first_iter_pres_fac" , "4" ,
198      "-initial_pres_fac"    , "8" 
199    };
200 
201  // Create the arguments
202  if (argc < 5)
203    {
204      printf("Usage : vpr circuit.net fpga.arch placed.out routed.out [Options ...]\n");
205      return;
206    }
207   
208  argv    = (char **)malloc (argc * sizeof(char *));
209 
210  argv[0] = (char *) malloc (strlen(execname       ));
211  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
212
213  argv[1] = (char *) malloc (strlen(circuit_net    ));
214  argv[1] = memcpy(argv[1],circuit_net     ,strlen(circuit_net    ));
215
216  argv[2] = (char *) malloc (strlen(fpga_arch      ));
217  argv[2] = memcpy(argv[2],fpga_arch       ,strlen(fpga_arch      ));
218
219  argv[3] = (char *) malloc (strlen(placed_out     ));
220  argv[3] = memcpy(argv[3],placed_out      ,strlen(placed_out     ));
221
222  argv[4] = (char *) malloc (strlen(routed_out     ));
223  argv[4] = memcpy(argv[4],routed_out      ,strlen(routed_out     ));
224 
225  {
226    unsigned int i;
227   
228    for (i = 0; i < nb_option_175_vpr; i ++)
229      {
230        argv[5+i] = (char *) malloc (strlen(option[i]      ));
231        argv[5+i] = memcpy(argv[5+i],option[i]       ,strlen(option[i]      ));
232      }// end i
233  }
234 
235  // +-------------------+
236  // | Run the benchmark |
237  // +-------------------+
238  main_175_vpr (argc,argv);
239
240  free(circuit_net);
241  free(fpga_arch  );
242  free(placed_out );
243  free(routed_out );
244
[138]245#endif
246}
247#endif
248
249void run_175_vpr ()
250{
251  printf("***** 175.vpr - Begin *****\n");
252
253#ifdef SPECINT2000_TRAIN
254  main_175_vpr_train ();
255#endif
256
[117]257  printf("***** 175.vpr - End   *****\n");
[138]258}
[117]259
260//=======================================================================================
261//                                                                   [ run_176_gcc ]
262//=======================================================================================
[138]263#ifdef SPECINT2000_TRAIN
264void main_176_gcc_train ()
[117]265{
[138]266#ifdef SPEC_gcc
[117]267
268#define   nb_option_176_gcc 2
269  int     argc      = 2 + nb_option_176_gcc;
270  char ** argv;
271
272  char  * execname        = "./gcc";
273  char  *_filename        = "/176.gcc/data/test/input/cccp.i";
274  char  * filename        = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_filename));
275  strcpy(filename,SPECINT2000_PATH); strcat(filename,_filename);
276
277  /*
278    -O
279    -fdefer-pop
280    -fomit-frame-pointer
281    -fcse-follow-jumps
282    -fcse-skip-blocks
283    -fexpensive-optimizations
284    -fthread-jumps
285    -fstrength-reduce
286    -funroll-loops
287    -fwritable-strings
288    -fpeephole
289    -fforce-mem
290    -ffunction-cse
291    -finline-functions
292    -finline
293    -freg-struct-return
294    -fdelayed-branch
295    -frerun-cse-after-loop
296    -fschedule-insns
297    -fschedule-insns2
298    -fcommon
299    -fgnu-linker
300    -m88110
301    -m88100
302    -m88000
303    -mno-ocs-debug-info
304    -mno-ocs-frame-position
305    -mcheck-zero-division
306  */
307
308  char * option [nb_option_176_gcc] = 
309    {
310      "-o"                   , "cccp.s"
311    };
312 
313  // Create the arguments
314  if (argc < 2)
315    {
316      printf("Usage : gcc filename [Options ...]\n");
317      return;
318    }
319   
320  argv    = (char **)malloc (argc * sizeof(char *));
321 
322  argv[0] = (char *) malloc (strlen(execname       ));
323  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
324  argv[1] = (char *) malloc (strlen(filename       ));
325  argv[1] = memcpy(argv[1],filename        ,strlen(filename       ));
326 
327  {
328    unsigned int i;
329   
330    for (i = 0; i < nb_option_176_gcc; i ++)
331      {
332        argv[2+i] = (char *) malloc (strlen(option[i]      ));
333        argv[2+i] = memcpy(argv[2+i],option[i]       ,strlen(option[i]      ));
334      }// end i
335  }
336 
337  // +-------------------+
338  // | Run the benchmark |
339  // +-------------------+
340  main_176_gcc (argc,argv);
341
342  free(filename);
343 
[138]344#endif
345}
346#endif
347                     
348void run_176_gcc ()
349{
350  printf("***** 176.gcc - Begin *****\n");
351
352#ifdef SPECINT2000_TRAIN
353  main_176_gcc_train ();
354#endif
355
[117]356  printf("***** 176.gcc - End   *****\n");
[138]357}
[117]358
[138]359
[117]360//=======================================================================================
361//                                                                   [ run_181_mcf ]
362//=======================================================================================
[138]363#ifdef SPECINT2000_TRAIN
364void main_181_mcf_train ()
365{
366#ifdef SPEC_mcf
[117]367 
368  int     argc = 2;
369  char ** argv;
370
371  char  * execname        = "./mcf";
372  char  *_filename        = "/181.mcf/data/test/input/inp.in";
373  char  * filename        = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_filename));
374  strcpy(filename,SPECINT2000_PATH); strcat(filename,_filename);
375
376  // Create the arguments
377  if (argc != 2)
378    {
379      printf("Usage : mcf filename\n");
380      return;
381    }
382   
383  argv    = (char **)malloc (argc * sizeof(char *));
384 
385  argv[0] = (char *) malloc (strlen(execname       ));
386  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
387
388  argv[1] = (char *) malloc (strlen(filename       ));
389  argv[1] = memcpy(argv[1],filename        ,strlen(filename       ));
390 
391  // +-------------------+
392  // | Run the benchmark |
393  // +-------------------+
394  main_181_mcf (argc,argv);
395
396  free(filename);
397 
[138]398#endif
399}
400#endif
401
402void run_181_mcf ()
403{
404  printf("***** 181.mcf - Begin *****\n");
405
406#ifdef SPECINT2000_TRAIN
407  main_181_mcf_train ();
408#endif
409
[117]410  printf("***** 181.mcf - End   *****\n");
[138]411}
[117]412
413//=======================================================================================
414//                                                                [ run_255_vortex ]
415//=======================================================================================
[138]416#ifdef SPECINT2000_TRAIN
417void main_255_vortex_train ()
418{
419#ifdef SPEC_vortex
[117]420 
421  int     argc = 2;
422  char ** argv;
423
424  char  * execname        = "./vortex";
[138]425#if defined(MORPHEO)
[117]426  char  *_filename        = "/255.vortex/data/test/input/bendian.raw";
[138]427#else
428# if (defined(EV67) || defined(x86))
429  char  *_filename        = "/255.vortex/data/test/input/lendian.raw";
430# else
431#  error "Unknow target"
432# endif
433#endif
434
[117]435  char  * filename        = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_filename));
436  strcpy(filename,SPECINT2000_PATH); strcat(filename,_filename);
437 
438  // Create the arguments
439  if (argc != 2)
440    {
441      printf("Usage : vortex filename\n");
442      return;
443    }
444   
445  argv    = (char **)malloc (argc * sizeof(char *));
446
447  argv[0] = (char *) malloc (strlen(execname       ));
448  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
449  argv[1] = (char *) malloc (strlen(filename       ));
450  argv[1] = memcpy(argv[1],filename        ,strlen(filename       ));
451
452  // +-------------------+
453  // | Run the benchmark |
454  // +-------------------+
455  main_255_vortex (argc,argv);
456
457  free(filename);
458 
[138]459#endif
460}
461#endif
462
463void run_255_vortex ()
464{
465  printf("***** 255.vortex - Begin *****\n");
466
467#ifdef SPECINT2000_TRAIN
468  main_255_vortex_train ();
469#endif
470
[117]471  printf("***** 255.vortex - End   *****\n");
[138]472}
[117]473 
474//=======================================================================================
475//                                                                 [ run_256_bzip2 ]
476//=======================================================================================
[138]477#ifdef SPECINT2000_TRAIN
478void main_256_bzip2_train ()
479{
480#ifdef SPEC_bzip
[117]481
482  int     argc = 4;
483  char ** argv;
484
485  char  * execname        = "./bzip2";
486  char  *_filename        = "/256.bzip2/data/test/input/input.random";
487  char  * filename        = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_filename));
488  strcpy(filename,SPECINT2000_PATH); strcat(filename,_filename);
489  char  * input_size      = "1";
490  char  * compressed_size = "1";
491
492  // Create the arguments
493  if ((argc < 1) || (argc > 4) )
494    {
495      printf("Usage : bzip2 [filename] [intput_size] [compressed_size]\n");
496      return;
497    }
498 
499  argv    = (char **)malloc (argc * sizeof(char *));
500  argv[0] = (char *) malloc (strlen(execname       ));
501  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
502
503  if (argc > 1)
504    {
505  argv[1] = (char *) malloc (strlen(filename       ));
506  argv[1] = memcpy(argv[1],filename        ,strlen(filename       ));
507    }
508 
509  if (argc > 2)
510    {
511  argv[2] = (char *) malloc (strlen(input_size     ));
512  argv[2] = memcpy(argv[2],input_size      ,strlen(input_size     ));
513    }
514
515  if (argc > 3)
516    { 
517  argv[3] = (char *) malloc (strlen(compressed_size));
518  argv[3] = memcpy(argv[3],compressed_size ,strlen(compressed_size));
519    }
520 
521  // +-------------------+
522  // | Run the benchmark |
523  // +-------------------+
524  main_256_bzip2 (argc,argv);
525
526  free(filename);
527 
[138]528#endif
529}
530#endif
531
532void run_256_bzip2 ()
533{
534  printf("***** 256.bzip2 - Begin *****\n");
535
536#ifdef SPECINT2000_TRAIN
537  main_256_bzip2_train ();
538#endif
539
[117]540  printf("***** 256.bzip2 - End   *****\n");
541}
542
543//=======================================================================================
544//                                                                 [ run_300_twolf ]
545//=======================================================================================
[138]546#ifdef SPECINT2000_TRAIN
547void main_300_twolf_train ()
548{
549#ifdef SPEC_twolf
[117]550
551  int     argc = 2;
552  char ** argv;
553
554  char  * execname        = "./twolf";
[138]555  char  *_circuitName     = "/300.twolf/data/test/input/test";
556  char  * circuitName     = (char *) malloc(strlen(SPECINT2000_PATH)+strlen(_circuitName));
[117]557  strcpy(circuitName,SPECINT2000_PATH); strcat(circuitName,_circuitName);
558
559  // Create the arguments
560  if ((argc < 1) || (argc > 2) )
561    {
562      printf("Usage : twolf circuitName\n");
563      return;
564    }
565 
566  argv    = (char **)malloc (argc * sizeof(char *));
567  argv[0] = (char *) malloc (strlen(execname       ));
568  argv[0] = memcpy(argv[0],execname        ,strlen(execname       ));
569
570  argv[1] = (char *) malloc (strlen(circuitName       ));
571  argv[1] = memcpy(argv[1],circuitName     ,strlen(circuitName    ));
572 
573  // +-------------------+
574  // | Run the benchmark |
575  // +-------------------+
576  main_300_twolf (2,argv);
577
578  free(circuitName);
579 
[138]580#endif
[117]581}
[138]582#endif
[117]583
[138]584void run_300_twolf ()
585{
586  printf("***** 300.twolf - Begin *****\n");
[117]587
[138]588#ifdef SPECINT2000_TRAIN
589  main_300_twolf_train ();
590#endif
[117]591
[138]592  printf("***** 300.twolf - End   *****\n");
[117]593}
Note: See TracBrowser for help on using the repository browser.