Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/vis15/src/compiler/target-cpu/fragments/seq-main.in
ViewVC logotype

Annotation of /branches/vis15/src/compiler/target-cpu/fragments/seq-main.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3917 - (view) (download)

1 : jhr 3912 //! Main function for standalone sequential C target
2 :     //
3 :     int main (int argc, const char **argv)
4 :     {
5 :     bool timingFlg = false; //! true if timing computation
6 :     uint32_t stepLimit = 0; //! limit on number of execution steps (0 means unlimited)
7 :    
8 :     // create the world
9 : jhr 3916 world *wrld = new (std::nothrow) world();
10 : jhr 3912 if (wrld == nullptr) {
11 : jhr 3916 std::cerr << "unable to create world" << std::endl;
12 : jhr 3912 exit (1);
13 :     }
14 :    
15 :     #ifndef DIDEROT_NO_INPUTS
16 :     // initialize the default values for the inputs
17 :     inputs inputs;
18 :     init_defaults (&inputs);
19 :     #endif
20 :    
21 :     // handle command-line options
22 :     {
23 : jhr 3916 diderot::options<@REALTY@,@INTTY@> *opts = new diderot::options<@REALTY@,@INTTY@> ();
24 :     opts->addFlag ("v,verbose", "enable runtime-system messages", &(wrld->_verbose));
25 :     opts->addFlag ("t,timing", "enable execution timing", &timingFlg);
26 :     opts->add ("l,limit", "specify limit on number of super-steps (0 means unlimited)",
27 : jhr 3912 &stepLimit, true);
28 :     #ifndef DIDEROT_NO_INPUTS
29 :     // register options for setting global inputs
30 :     register_inputs (&inputs, opts);
31 :     #endif
32 :     register_outputs (opts);
33 : jhr 3916 opts->process (argc, argv);
34 :     delete opts;
35 : jhr 3912 }
36 :    
37 :     // initialize scheduler stuff
38 : jhr 3916 if (wrld->_verbose) {
39 : jhr 3912 std::cerr << "initializing world ..." << std::endl;
40 :     }
41 :     if (wrld->init()) {
42 :     std::cerr << "Error initializing world:\n" << biffMsgStrGet(wrld->_errors) << std::endl;
43 :     exit(1);
44 :     }
45 :    
46 :     #ifndef DIDEROT_NO_INPUTS
47 :     // initialize the input globals
48 : jhr 3916 if (init_inputs (wrld, &inputs)) {
49 : jhr 3912 std::cerr << "Error initializing inputs:\n" << biffMsgStrGet(wrld->_errors) << std::endl;
50 :     exit(1);
51 :     }
52 :     #endif
53 :    
54 :     // run the generated global initialization code
55 : jhr 3916 if (wrld->_verbose) {
56 : jhr 3917 std::cerr << "initializing globals ...\n";
57 : jhr 3912 }
58 : jhr 3916 if (initially (wrld)) {
59 : jhr 3912 std::cerr << "Error in global initialization:\n%s\n"
60 :     << biffMsgStrGet(wrld->_errors) << std::endl;
61 :     exit(1);
62 :     }
63 :    
64 : jhr 3916 if (wrld->_verbose) {
65 : jhr 3917 std::cerr << "run with " << wrld->_num_strands << " strands ..." << std::endl;
66 : jhr 3912 }
67 :    
68 :     uint32_t nSteps = @PREFIX@Run (wrld, stepLimit);
69 :    
70 : jhr 3916 if (wrld->_errors->errNum > 0) {
71 : jhr 3917 std::cerr << "Error during execution:\n%s\n" << biffMsgStrGet(wrld->_errors);
72 : jhr 3912 exit(1);
73 :     }
74 :    
75 : jhr 3916 if (wrld->_verbose) {
76 : jhr 3917 std::cerr << "done: " << nSteps << " steps, in " << wrld->_run_time << " seconds"
77 :     << std::endl;
78 : jhr 3912 }
79 :     else if (timingFlg) {
80 : jhr 3917 std::cout << "usr=" << wrld->_run_time << std::endl;
81 : jhr 3912 }
82 :    
83 :     // output the final strand states
84 : jhr 3917 write_output (wrld);
85 : jhr 3912
86 : jhr 3917 delete wrld;
87 : jhr 3912
88 :     return 0;
89 :    
90 :     } // main

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0