utils/bench-simulator.cc
author Tom Henderson <tomh@tomh.org>
Mon, 21 Sep 2015 10:21:07 -0700
changeset 11672 51263c7e64bb
parent 11464 30814be878cd
permissions -rw-r--r--
pybindgen required version is now a string literal, not a tuple
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2006 INRIA
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    21
#include <iomanip>
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include <iostream>
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include <fstream>
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include <vector>
3365
6409d2460601 bug 245: build failure with gcc 4.3.x
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2913
diff changeset
    25
#include <string.h>
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    27
#include "ns3/core-module.h"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    28
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 14
diff changeset
    29
using namespace ns3;
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
    32
bool g_debug = false;
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    34
std::string g_me;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    35
#define LOG(x)   std::cout << x << std::endl
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    36
#define LOGME(x) LOG (g_me << x)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    37
#define DEB(x) if (g_debug) { LOGME (x) ; }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    38
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    39
// Output field width
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    40
int g_fwidth = 6;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    41
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
    42
class Bench 
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
    43
{
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
public:
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    45
  Bench (const uint32_t population, const uint32_t total)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    46
  : m_population (population),
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    47
    m_total (total),
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    48
    m_count (0)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    49
  { };
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    50
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    51
  void SetRandomStream (Ptr<RandomVariableStream> stream)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    52
  {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    53
    m_rand = stream;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    54
  }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    55
    
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    56
  void SetPopulation (const uint32_t population)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    57
  {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    58
    m_population = population;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    59
  }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    60
    
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    61
  void SetTotal (const uint32_t total)
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    62
  {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    63
    m_total = total;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    64
  }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    65
    
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    66
  void RunBench (void);
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    68
  void Cb (void);
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    69
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    70
  Ptr<RandomVariableStream> m_rand;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    71
  uint32_t m_population;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    72
  uint32_t m_total;
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    73
  uint32_t m_count;
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
};
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 110
diff changeset
    77
Bench::RunBench (void) 
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    79
  SystemWallClockMs time;
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    80
  double init, simu;
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    81
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    82
  DEB ("initializing");
11464
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
    83
  m_count = 0;
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
    84
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    85
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    86
  time.Start ();
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    87
  for (uint32_t i = 0; i < m_population; ++i)
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
    88
    {
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    89
      Time at = NanoSeconds (m_rand->GetValue ());
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    90
      Simulator::Schedule (at, &Bench::Cb, this);
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
    91
    }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    92
  init = time.End ();
204
d387497c6bfa add command-line options to simulator benchmark
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 190
diff changeset
    93
  init /= 1000;
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    94
  DEB ("initialization took " << init << "s");
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
    96
  DEB ("running");
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    97
  time.Start ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    98
  Simulator::Run ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
    99
  simu = time.End ();
204
d387497c6bfa add command-line options to simulator benchmark
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 190
diff changeset
   100
  simu /= 1000;
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   101
  DEB ("run took " << simu << "s");
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   103
  LOG (std::setw (g_fwidth) << init <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   104
       std::setw (g_fwidth) << (m_population / init) <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   105
       std::setw (g_fwidth) << (init / m_population) <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   106
       std::setw (g_fwidth) << simu <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   107
       std::setw (g_fwidth) << (m_count / simu) <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   108
       std::setw (g_fwidth) << (simu / m_count));
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   109
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
}
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
void
122
6b8f1eda5c57 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 110
diff changeset
   113
Bench::Cb (void)
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
{
11464
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
   115
  if (m_count >= m_total) 
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
   116
    {
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
   117
      return;
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
   118
    }
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   119
  DEB ("event at " << Simulator::Now ().GetSeconds () << "s");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   120
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   121
  Time after = NanoSeconds (m_rand->GetValue ());
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   122
  Simulator::Schedule (after, &Bench::Cb, this);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   123
  ++m_count;
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
}
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   126
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   127
Ptr<RandomVariableStream>
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   128
GetRandomStream (std::string filename)
189
fcfc2247da10 add help output to simulator bench/tester
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
   129
{
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   130
  Ptr<RandomVariableStream> stream = 0;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   131
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   132
  if (filename == "")
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   133
    {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   134
      LOGME ("using default exponential distribution");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   135
      Ptr<ExponentialRandomVariable> erv = CreateObject<ExponentialRandomVariable> ();
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   136
      erv->SetAttribute ("Mean", DoubleValue (100));
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   137
      stream = erv;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   138
    }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   139
  else
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   140
    {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   141
      std::istream *input; 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   142
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   143
      if (filename == "-") 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   144
        {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   145
          LOGME ("using event distribution from stdin");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   146
          input = &std::cin;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   147
        } 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   148
      else
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   149
        {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   150
          LOGME ("using event distribution from " << filename);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   151
          input = new std::ifstream (filename.c_str ());
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   152
        }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   153
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   154
      double value;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   155
      std::vector<double> nsValues;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   156
      
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   157
      while (!input->eof ()) 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   158
        {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   159
          if (*input >> value) 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   160
            {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   161
              uint64_t ns = (uint64_t) (value * 1000000000);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   162
              nsValues.push_back (ns);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   163
            } 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   164
          else 
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   165
            {
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   166
              input->clear ();
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   167
              std::string line;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   168
              *input >> line;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   169
            }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   170
        }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   171
      LOGME ("found " << nsValues.size () << " entries");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   172
      Ptr<DeterministicRandomVariable> drv = CreateObject<DeterministicRandomVariable> ();
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   173
      drv->SetValueArray (&nsValues[0], nsValues.size ());
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   174
      stream = drv;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   175
    }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   176
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   177
  return stream;
189
fcfc2247da10 add help output to simulator bench/tester
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
   178
}
fcfc2247da10 add help output to simulator bench/tester
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 163
diff changeset
   179
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   180
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   181
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
int main (int argc, char *argv[])
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
{
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   184
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   185
  bool schedCal  = false;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   186
  bool schedHeap = false;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   187
  bool schedList = false;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   188
  bool schedMap  = true;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   189
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   190
  uint32_t pop   =  100000;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   191
  uint32_t total = 1000000;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   192
  uint32_t runs  =       1;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   193
  std::string filename = "";
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   194
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   195
  CommandLine cmd;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   196
  cmd.Usage ("Benchmark the simulator scheduler.\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   197
             "\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   198
             "Event intervals are taken from one of:\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   199
             "  an exponential distribution, with mean 100 ns,\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   200
             "  an ascii file, given by the --file=\"<filename>\" argument,\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   201
             "  or standard input, by the argument --file=\"-\"\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   202
             "In the case of either --file form, the input is expected\n"
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   203
             "to be ascii, giving the relative event times in ns.");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   204
  cmd.AddValue ("cal",   "use CalendarSheduler",          schedCal);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   205
  cmd.AddValue ("heap",  "use HeapScheduler",             schedHeap);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   206
  cmd.AddValue ("list",  "use ListSheduler",              schedList);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   207
  cmd.AddValue ("map",   "use MapScheduler (default)",    schedMap);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   208
  cmd.AddValue ("debug", "enable debugging output",       g_debug);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   209
  cmd.AddValue ("pop",   "event population size (default 1E5)",         pop);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   210
  cmd.AddValue ("total", "total number of events to run (default 1E6)", total);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   211
  cmd.AddValue ("runs",  "number of runs (default 1)",    runs);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   212
  cmd.AddValue ("file",  "file of relative event times",  filename);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   213
  cmd.AddValue ("prec",  "printed output precision",      g_fwidth);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   214
  cmd.Parse (argc, argv);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   215
  g_me = cmd.GetName () + ": ";
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   216
  g_fwidth += 6;  // 5 extra chars in '2.000002e+07 ': . e+0 _
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   217
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   218
  ObjectFactory factory ("ns3::MapScheduler");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   219
  if (schedCal)  { factory.SetTypeId ("ns3::CalendarScheduler"); }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   220
  if (schedHeap) { factory.SetTypeId ("ns3::HeapScheduler");     }
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   221
  if (schedList) { factory.SetTypeId ("ns3::ListScheduler");     }  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   222
  Simulator::SetScheduler (factory);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   223
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   224
  LOGME (std::setprecision (g_fwidth - 6));
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   225
  DEB ("debugging is ON");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   226
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   227
  LOGME ("scheduler: " << factory.GetTypeId ().GetName ());
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   228
  LOGME ("population: " << pop);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   229
  LOGME ("total events: " << total);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   230
  LOGME ("runs: " << runs);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   231
  
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   232
  Bench *bench = new Bench (pop, total);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   233
  bench->SetRandomStream (GetRandomStream (filename));
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   234
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   235
  // table header
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   236
  LOG ("");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   237
  LOG (std::left << std::setw (g_fwidth) << "Run #" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   238
       std::left << std::setw (3 * g_fwidth) << "Inititialization:" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   239
       std::left << std::setw (3 * g_fwidth) << "Simulation:");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   240
  LOG (std::left << std::setw (g_fwidth) << "" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   241
       std::left << std::setw (g_fwidth) << "Time (s)" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   242
       std::left << std::setw (g_fwidth) << "Rate (ev/s)" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   243
       std::left << std::setw (g_fwidth) << "Per (s/ev)" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   244
       std::left << std::setw (g_fwidth) << "Time (s)" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   245
       std::left << std::setw (g_fwidth) << "Rate (ev/s)" <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   246
       std::left << std::setw (g_fwidth) << "Per (s/ev)" );
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   247
  LOG (std::setfill ('-') <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   248
       std::right << std::setw (g_fwidth) << " " <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   249
       std::right << std::setw (g_fwidth) << " " <<       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   250
       std::right << std::setw (g_fwidth) << " " <<       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   251
       std::right << std::setw (g_fwidth) << " " <<       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   252
       std::right << std::setw (g_fwidth) << " " <<       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   253
       std::right << std::setw (g_fwidth) << " " <<       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   254
       std::right << std::setw (g_fwidth) << " " <<
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   255
       std::setfill (' ')
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   256
       );
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   257
       
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   258
  // prime
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   259
  DEB ("priming");
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   260
  std::cout << std::left << std::setw (g_fwidth) << "(prime)";
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   261
  bench->RunBench ();
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   262
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   263
  bench->SetPopulation (pop);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   264
  bench->SetTotal (total);
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   265
  for (uint32_t i = 0; i < runs; i++)
190
916cd1bfed82 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 189
diff changeset
   266
    {
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   267
      std::cout << std::setw (g_fwidth) << i;
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   268
      
204
d387497c6bfa add command-line options to simulator benchmark
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 190
diff changeset
   269
      bench->RunBench ();
d387497c6bfa add command-line options to simulator benchmark
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 190
diff changeset
   270
    }
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   271
9831
c08a9d8cb9fa Refactor utils/bench-simulator to use CommandLine, RandomVariableStream
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 6845
diff changeset
   272
  LOG ("");
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 143
diff changeset
   273
  return 0;
11464
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
   274
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
   275
  Simulator::Destroy ();
30814be878cd bug 2127: Scheduler benchmark utility works correctly in first run only (patch due to Philipp Andelfinger)
Tom Henderson <tomh@tomh.org>
parents: 9831
diff changeset
   276
12
917ba023c576 utils and samples
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   277
}