From b8985e7552aec1a1fb543e88ad5f5a5d1881021a Mon Sep 17 00:00:00 2001 From: David Nicol Date: Mon, 16 Dec 2024 22:29:26 -0600 Subject: [PATCH] prep for announced release --- docs/RunningPCES.md | 181 ++++++++++++++++++++++++++++++ docs/RunningPCES.pdf | Bin 0 -> 95440 bytes embedded/xlsx/embedded-model.xlsx | Bin 20048 -> 0 bytes go.mod | 2 +- go.sum | 4 +- simulator/args-run | 4 +- simulator/args/args-sim | 7 +- simulator/args/args-sim-template | 10 -- simulator/output/results.yaml | 14 ++- simulator/run.py | 44 ++++++-- simulator/sim-dir/go.mod | 2 +- simulator/sim-dir/go.sum | 4 +- simulator/sim-dir/sim.go | 2 - 13 files changed, 238 insertions(+), 36 deletions(-) create mode 100644 docs/RunningPCES.md create mode 100644 docs/RunningPCES.pdf delete mode 100755 embedded/xlsx/embedded-model.xlsx diff --git a/docs/RunningPCES.md b/docs/RunningPCES.md new file mode 100644 index 0000000..f546bbc --- /dev/null +++ b/docs/RunningPCES.md @@ -0,0 +1,181 @@ +### Running a pces simulation + +This document describes how one executes a set of **pces** simulation runs that together comprise an 'evaluation'. This document is a companion to others that together provide a picture of what **pces** comprises. + +- [PCES Overview.pdf](#https://github.com/ITI/pces/blob/main/docs/PCES-Overview.pdf) describes the model used to describe workflows in **pces**, and the functions used to demark measurement points. A set of **pces** experiments computes and reports estimated performance metrics (like latency and throughput) observed between measurement points. +- [ API.pdf](#https://github.com/ITI/pces/blob/main/docs/API.pdf) documents the formatting requirements of input files read by the **pces** simulation. +- [mrnes.pdf](https://github.com/ITI/mrnes/blob/main/docs/mrnes.pdf) describes the **mrnes** repository, which is imported by **pces** and provides the modeling support for describing the network and computing devices upon which the **pces** applicatin workflows executed. +- [xlsxPCES.pdf](#https://github.com/ITI/pcesbld/blob/main/docs/xlsxPCES-v1.pdf) describes a tool for building **pces/mrnes** models. This tool creates files that are directly used by the scripts we describe here. + +#### *github.com/iti/pcesapps* + +Distribution *github.com/iti/pcesapps* contains tools for running *pces* models, and directories that contain specification for example models. + +The tools for running *pces* reside in subdirectory *pcesapps/simulator*. The files and directories in *pcesapps/simulator* include + +- *sim-dir*, a subdirectory with .go code front-end for performing a simulation run +- *input*, a subdirectory where the simulator looks for its input files +- *template*, a subdirectory where the templated (i.e. symbol-bearing) versions of the simulation experiment are placed. See [Building a PCES Model]() for details on using symbols to identify the variables in a set of simulation experiments. +- *output*, a subdirectory where the output from a simulation run is placed +- *run.py*, a script that for each experiment creates the input files for the specified run, executes the run, and gathers the results of the run. At the end of the runs it forms an output file *output/results.yaml* that contains the measured and reported results of each run. + +*run.py* expects the following input files, the formats for each having been described in companion documents [API.md](#https://github.com/ITI/pces/blob/main/docs/API.md) found in the 'docs' folder for repository *github.com/iti/pces* , and [mrnes.pdf](#https://github.com/ITI/mrnes/blob/main/docs/mrnes.pdf), found in the 'docs' folder for repository *github.com/iti/mrnes*. The expected input functions are + +- *cp.yaml*, a description of the computational patterns, the functions they organize, and the functions' input/output relationships. +- *cpInit.yaml*, description of the configuration parameters for each of the model's computational functions. +- *topo.yaml*, a description of the model of computers and network on which the functions of the computational patterns are executed. +- *funcExec.yaml*, a table with execution timing information for the model's functions. +- *devExec.yaml*, a table with execution timing information for the operations performed by switches and routers. +- *exp.yaml*, description of performance parameters to ascribe to model components +- *map.yaml*, a mapping of each of the model's functions to one of the network model's computational devices. +- *experiments.yaml*, a description of the set of runs to perform on a model, where the values to assign to each free variable are given. + +#### *run.py* + +##### Performing an evaluation + +###### On developing a model + +The first step in performing an evaluation using **pces** is to develop a model. **pces** notions of functions and computational patterns are used to lay out chains of function evaluations which in aggregate capture the most significant (meaning here 'time-costly') operations that must be represented, and those operations whose performance is of particular interest as their configuration parameters are changed. + +A TBD companion document will lay out principles and identify low-level details to consider when developing a **pces** evaluation of a system, here we just point to xlsxPCES as a viable option to express and validate the correctness of a model to be simulated. Ultimately though, what *run.py* needs is for *simulator/input* to have correctly formated versions of the eight input files identified earlier, whatever the source. + +###### On executing a simulation run + +The simulation runs can be performed in the host operating system of the user's computer, executing a binary compiled on that computer using a sufficient new version of the Go language, or can be executed by building and running a Docker container that has an internal version of the simulator, and works by importing the model input files and exporting the result files. Either on the host operating system or within a container, the execution of a simulation run is initiated with a command + +``` +% sim -is args/args-sim +``` + +The contents of the command line file *simuator/args/args-sim* include a number of commands that *run.py* writes in, depending on its own input arguments. The contents of *args-sim* also include selections made by the user, encode in file *simulator/args/args-sim-template*, described below. + +| command line argument | Explanation | +| --------------------- | ------------------------------------------------------------ | +| -stop stoptime | The simulation stopping time (in units of seconds) | +| -rngseed initialSeed | An initial value (integer) to use in seeding a random number generator so as to produce reproducible behavior | +| -tunits unitscode | unitscode is in {'sec', 'msec', 'musec', 'nsec'} giving units of time in measurement latency reporting | + +​ Table 1: User specified command line arguments for simulation runs + +These are the only parameters a user needs to be concerned with before launching an evaluation. The simulation activity will stop once there are no events on the event-list, meaning there is no starting of a new execution thread anytime in the future, and all previous execution threads have completed. The 'stoptime' then need only be large enough relative to the latest planned-for execution thread beginning to ensure that they have all started and completed. On the other hand, evaluations that are measuring throughput may be written to run traffic continuously through virtual time until the stoptime is reached. + +Executable file 'sim' is a compiled version of the 'main' function of the simulator code (*simulator/sim-dir/sim.go*): + +``` +package main +import ( + "fmt" + "github.com/iti/pces" +) + +func main() { + pces.ReadSimArgs() + pces.RunExperiment(expCntrl, expCmplt) + fmt.Println("Done") +} +``` + +The **pces** repository has a method (*pces.ReadSimArgs*) to read in the input files and parse them, and another (*pces.RunExperiment*) to run the experiment. The two input arguments to the latter function are themselves names of functions in the main module, but which appear in *simulator/sim-dir/exp.go*. The **pces** control code calls function *expCntrl* after parsing the input files but before beginning to execute events, as *expCntrl* is responsible for scheduling the start events. + +``` +func expCntrl(evtMgr *evtm.EventManager, context any, data any) any { + // go through all comp patterns looking for functions of the 'start' class, + // and schedule them for execution + for _, cpi := range pces.CmpPtnInstByID { + for _, cpfi := range cpi.Funcs { + if cpfi.Class == "start" { + evtMgr.Schedule(cpfi, &cpfi.Class, + pces.EnterFunc, vrtime.SecondsToTime(0.0)) + } + } + } + return nil +} +``` + +The function signature of expCntrl is that of all event handling routings. The outer loop iterates over data structures that represent computational patterns, the inner loop iterates over all functions attached to the chosen computational pattern, and the test made is whether the class of the selected function function is "start", a reserved keyword for one of the **pces** function classes. If the function matches this test, the scheduling method associated with the event list is called to execute 0.0 seconds into the future a function (*pces.EnterFunc*) that will determine when the selected start function actually is run first (based on its configuration parameters). So the simulation is seeded for activity by picking out the "start" functions and arranging to have the execution thread each starts scheduled. + +After the simulation run terminates the method *pces.RunExperiment* causes *expCmplt* to execute. All it does is to save the simulation run's measurement outputs in a file that will be read by *run.py*. + +The point of exposing *expCntl* and *expCmplt* outside of the **pces** repository is to simplify modifications that might be desired for initializing the simulation run, or modify what is calculated and reported when the run has completed. + +###### Perform an evaluation using *run.py* + +One execution of *run.py* initiates multiple individual simulation runs, each run being initialized with a set of parameters. So, for instance, to observe the sensitivity of the latency between some particular source and destination as a function of the speed of device interfaces, one could run one experiment with 1Mbs interfaces, another with 10Mbs interfaces, and another with 100Mbs interfaces. The set of experiments to run is described in *experiments.yaml*, and *run.py* manages the setup, execution, and result-gathering for each. + +File *simulator/args-run* is a file containing command-line arguments for *run.py*. These are given below + +| command line argument | explanation | required | +| --------------------- | ------------------------------------------------------------ | -------- | +| -template templateDir | A subdirectory (nominally *pcesapps/simulation/template* in the repository, but can be configured) where input files are placed. Some of these files contain variable symbols that are instantiated before a simulation run. | Yes | +| -input inputDir | Names a subdirectory where a complete set of instantiated input files is placed by *run.py* in preparation for a simulation run. Nominally *pcesapps/simulator/output* in the repository, but can be configured. | Yes | +| -output outputDir | Names a subdirectory where the simulator writes its output, and *run.py* gathers and collates it, producing at the end of its execution a file */output/results.yaml*. | Yes | +| -extern externDir | When present, means the simulator will be run from inside a Docker container, which links a file directory */tmp/extern* inside of the container with a file directory outside of the container. The -extern value names the outside directory. | No | +| -container tag | When present, means the simulator will be run from inside a Docker container. The value of -container is the tag which identifies the container. | | + +​ Table 2: Command-line parameters for *run.py* script + +As shown in xlsxPCES, a model can be expressed including substrings that are flagged as 'symbols' which before an experiment is run are replaced with actual values. *experiment.yaml* is formatted as a list of dictionaries, with each dictionary assigning a concrete value to every symbol. A symbol substring is flagged as a string whose first character is '$'. + +*run.py* is written in a way that regardless of which execution option is selected, when *run.py* starts running it assumes the input files are all in the subdirectory named by *run.py*'s '-template' argument. + +The steps *run.py* takes to form the completed set of input files for each run and launch the run are as follows. + +1. If the native operating system is to run the *sim* executable, check whether executable *simulator/sim-dir/sim* exists. If not, spawn a process that compiles *sim.go* and *exp.go* to create it. If the runs are to use a containerized version of *sim*, use Docker commands to look for the existence of a container with name 'tag', the value of the -container command line argument. If the container is absent a process is spawned to build it. +2. Copy all of the files in *simulator/template* into *simulator/input*. +3. For each experiment described in *simulator/template/experiments.yaml* + - extract the dictionary that maps symbol codes to values, and the list of codes that identify which files the symbols are found in. + - Copy each of these files from *simulator/template* to *simulator/input*, and then for each symbol do a global replacement of the symbol with the string identified as its value for this experiment, in each of the files *experiment.yaml* implies may contain this symbol. After this step there are no symbols in any file located in *simulator/input*. + - Create file *simulator/args/arg-sim*, in preparation for the simulation run. + - Spawn a process that executes the simulator, using *simulator/args/args-sim* as the command-line file, *simulator/input* as the directory where input files are located, and *simulator/output* where output files will be located. + - On completion of the run, gather the output in preparation for eventual aggregation. + + +4. Complete the evaluation by creating an output file *simulator/output/results.yaml* that describes all measurements made in each run. + +###### *simulator/output/results.yaml* + +As an example, the results reported from doing an evaluation on the 'running model' described in companion document 'xlsxPCES.md' is + +``` +pces evaluation run at time 2024-12:52:05.546541 +- exprmnt: exp-1 + measurements: + - index: 1 + latency: 1.0840000000007421 (msec) + measurename: end2end + waypoints: [] +- exprmnt: exp-2 + measurements: + - index: 1 + latency: 24.84399999999914 (msec) + measurename: end2end + waypoints: [] +- exprmnt: exp-3 + measurements: + - index: 1 + latency: 1.0790000000015425 (msec) + measurename: end2end + waypoints: [] +- exprmnt: exp-4 + measurements: + - index: 1 + latency: 24.838999999999942 (msec) + measurename: end2end + waypoints: [] +``` + +​ Figure 1: Evaluation output from executing xlsxPCES running example + +The output makes reference to experiments 'exp-1' through 'exp-4' that are described in input file *input/experiments.yaml*, which is part of the running example of a xlsxPCES model described in 'xlsxPCES.md'. Briefly, a packet is generated and encrypted by one device and then sent to another (through a switch) which decrypts its, processes it, encrypts the result, and returns the encrypted result to the origin where it is decrypted and the result processed. The main points to be understood here are that each of the experiments reports a latency between the start and end measurement endpoints, at the origin. These points are configured with the identifier 'end2end'. In this example the latency is reported in milliseconds, the units used in the report is a **pces** run-time parameter. + + **pces** allows for multiple measurements within a single simulation run, between the same two measurement points and/or between multiple pairs of measurement points. A given pair of points will share the same 'measurename' attribute as this is a measurement point identifier; each initiation of a measurement using the same beginning measurement point increases the 'index' attribute. + +As described in 'xlsxPCES.md', the **pces** user has the flexibility of selecting the parameters to be varied each run and the values given the experimental parameters. The user's knowledge of that setup is required then to take the measurements *run.py* causes to be reported and organize them in tables, interpret them, graph them, whatever the end result the user has in mind for these results. The results file is written out in yaml format, which supports a script-based approach to analyzing them. + + + +#### Example Models + +The intention is to use the *pcesapps* repository to hold descriptions of sample example models. With the first release we have one, the running example from xlsxPCES.md, commited to *pcesapps/embedded* . This directory has subdirectory *template* in which one finds the eight yaml input files for that example (including symbols), and subdirectory *xlsx* in which one finds the *embedded-model-exp.xlsx* that, when processed by the xlsxPCES tool, creates the files found here in *template*. diff --git a/docs/RunningPCES.pdf b/docs/RunningPCES.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7af85896ac987c410770f333ff92e406e8a61a88 GIT binary patch literal 95440 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 literal 0 HcmV?d00001 diff --git a/embedded/xlsx/embedded-model.xlsx b/embedded/xlsx/embedded-model.xlsx deleted file mode 100755 index f05dddfea6b2269667ec359dfd22572cd86738de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20048 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 diff --git a/go.mod b/go.mod index 6f6b544..eba82e3 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.7 require ( github.com/iti/evt/evtm v0.1.4 github.com/iti/evt/vrtime v0.1.5 - github.com/iti/pces v0.0.15 + github.com/iti/pces v0.0.16 ) require ( diff --git a/go.sum b/go.sum index a43c106..4abee6f 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ github.com/iti/evt/vrtime v0.1.5 h1:5d2O3ZGb9OruBkBxZ1PzyXBlHkAUmW27jz9fUXHc6MI= github.com/iti/evt/vrtime v0.1.5/go.mod h1:NtgQQ20CSeaLxWNsAROKuHtAdeXNZ86Wg6ox2l5LtrU= github.com/iti/mrnes v0.0.16 h1:TiyBzSFo4teG0EvKjbdOPHhvC6HywDmGmVRRtD06wkI= github.com/iti/mrnes v0.0.16/go.mod h1:1P8kC384qaei5i84ZK42VYDrXmRLiYZHmx52yeLL37E= -github.com/iti/pces v0.0.15 h1:wut3GAFRS3Ks8uKhdA/d2w6dqDfD/SD55zgXoLTZqxA= -github.com/iti/pces v0.0.15/go.mod h1:puOlSzKF8W6wXiK6IwSGOjR7S3gGGKpC0fn9JjakXeA= +github.com/iti/pces v0.0.16 h1:+PEhCkaqA2HlBnz+aw1u/Yax/BzxveWicFuQozutd7U= +github.com/iti/pces v0.0.16/go.mod h1:puOlSzKF8W6wXiK6IwSGOjR7S3gGGKpC0fn9JjakXeA= github.com/iti/rngstream v0.2.2 h1:9cfSikwWPW1Yie+RjdJ23uUuMryLu+Ou38/TChYLPZ8= github.com/iti/rngstream v0.2.2/go.mod h1:sf9vdWtEjVW4dxOocgIqbivkNIrfcl10H8jEeeqFNnQ= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= diff --git a/simulator/args-run b/simulator/args-run index 8455eb3..824ecab 100644 --- a/simulator/args-run +++ b/simulator/args-run @@ -2,5 +2,5 @@ -input ./input -output ./output -sim ./sim-dir --container pces/sim --extern ./ +#-container pces/sim +#-extern ./ diff --git a/simulator/args/args-sim b/simulator/args/args-sim index ea0cfcf..737d1ca 100644 --- a/simulator/args/args-sim +++ b/simulator/args/args-sim @@ -1,14 +1,13 @@ -exprmnt exp-4 --container --inputLib ./input --outputLib ./output -cp cp.yaml -cpInit cpInit.yaml -funcExec funcExec.yaml -devExec devExec.yaml --map map.yaml -exp exp.yaml +-map map.yaml -topo topo.yaml +-inputLib ./input +-outputLib ./output -trace trace.yaml -stop 100.0 -msr msr.yaml diff --git a/simulator/args/args-sim-template b/simulator/args/args-sim-template index 49bbd1d..328cd77 100644 --- a/simulator/args/args-sim-template +++ b/simulator/args/args-sim-template @@ -1,14 +1,4 @@ --inputLib ./input --outputLib ./output --cp cp.yaml --cpInit cpInit.yaml --funcExec funcExec.yaml --devExec devExec.yaml --map map.yaml --exp exp.yaml --topo topo.yaml -trace trace.yaml -stop 100.0 --msr msr.yaml -rngseed 234545 -tunits msec diff --git a/simulator/output/results.yaml b/simulator/output/results.yaml index 2879e3a..0b70ed5 100644 --- a/simulator/output/results.yaml +++ b/simulator/output/results.yaml @@ -1,21 +1,25 @@ -experiment set run at time 2024-12-14 07:40:59.906740 +pces evaluation run at time 2024-12-16 04:52:05.546541 - exprmnt: exp-1 measurements: - - latency: 1.0840000000007421 (msec) + - index: 1 + latency: 1.0840000000007421 (msec) measurename: end2end waypoints: [] - exprmnt: exp-2 measurements: - - latency: 24.84399999999914 (msec) + - index: 1 + latency: 24.84399999999914 (msec) measurename: end2end waypoints: [] - exprmnt: exp-3 measurements: - - latency: 1.0790000000015425 (msec) + - index: 1 + latency: 1.0790000000015425 (msec) measurename: end2end waypoints: [] - exprmnt: exp-4 measurements: - - latency: 24.838999999999942 (msec) + - index: 1 + latency: 24.838999999999942 (msec) measurename: end2end waypoints: [] diff --git a/simulator/run.py b/simulator/run.py index 84c711b..40a71d7 100755 --- a/simulator/run.py +++ b/simulator/run.py @@ -15,8 +15,6 @@ import os import glob -sheetNames = ('cp', 'topo', 'execTime', 'netParams', 'mapping') - def main(): global workingDir, csvDir @@ -84,7 +82,7 @@ def main(): for fileName in fList: filePath = os.path.join(templateDir, fileName) if not os.path.isfile(filePath): - print('expected file {} does not exist'.format(filePath)) + print('expected file {} does not exist in templates directory'.format(filePath)) errs += 1 if errs > 0: @@ -150,7 +148,7 @@ def main(): aggOutFile = os.path.join(outputDir, 'results.yaml') with open(aggOutFile, 'w') as wf: - print('experiment set run at time {}'.format(datetime.datetime.now()), file=wf) + print('pces evaluation run at time {}'.format(datetime.datetime.now()), file=wf) allMsr = [] @@ -161,11 +159,43 @@ def main(): with open(os.path.join(argsDir,'args-sim-template'), 'r') as tf, open(os.path.join(argsDir,'args-sim'), 'w') as wf: wf.write('-exprmnt {}\n'.format(exprmntName)) + tagPairs = [('-inputDir', './input'), ('-outputDir', './output'), ('-cp', 'cp.yaml'), ('-cpInit', 'cpInit.yaml'), + ('-funcExec', 'funcExec.yaml'), ('-devExec', 'devExec.yaml'), ('-exp', 'exp.yaml'),('-map', 'map.yaml'), + ('-topo', 'topo.yaml'), ('-msr', 'msrFile')] + if containerTag is not None: - wf.write('-container\n') + tagPairs.append(('-container', '')) + + for tag, value in tagPairs: + wf.write(tag+' '+value+'\n') for line in tf: - wf.write(line) + # hard wire the input file names + if line.startswith('#'): + continue + pieces = line.split() + if pieces[0] == '-container': + continue + if pieces[0] == '-cp': + continue + if pieces[0] == '-cpInit': + continue + elif pieces[0] == '-funcExec': + continue + elif pieces[0] == '-devExec': + continue + elif pieces[0] == '-map': + continue + elif pieces[0] == '-exp': + continue + elif pieces[0] == '-topo': + continue + elif pieces[0] == 'inputDir': + continue + elif pieces[0] == 'outputDir': + continue + else: + wf.write(line) sheetFlag = {} # get the files to be modified @@ -178,7 +208,7 @@ def main(): else: sheets = sheetNames - for sheet in sheetNames: + for sheet in sheets: sheetFlag[sheet] = True # copy the files to be modified diff --git a/simulator/sim-dir/go.mod b/simulator/sim-dir/go.mod index 6f6b544..eba82e3 100644 --- a/simulator/sim-dir/go.mod +++ b/simulator/sim-dir/go.mod @@ -5,7 +5,7 @@ go 1.22.7 require ( github.com/iti/evt/evtm v0.1.4 github.com/iti/evt/vrtime v0.1.5 - github.com/iti/pces v0.0.15 + github.com/iti/pces v0.0.16 ) require ( diff --git a/simulator/sim-dir/go.sum b/simulator/sim-dir/go.sum index a43c106..4abee6f 100644 --- a/simulator/sim-dir/go.sum +++ b/simulator/sim-dir/go.sum @@ -8,8 +8,8 @@ github.com/iti/evt/vrtime v0.1.5 h1:5d2O3ZGb9OruBkBxZ1PzyXBlHkAUmW27jz9fUXHc6MI= github.com/iti/evt/vrtime v0.1.5/go.mod h1:NtgQQ20CSeaLxWNsAROKuHtAdeXNZ86Wg6ox2l5LtrU= github.com/iti/mrnes v0.0.16 h1:TiyBzSFo4teG0EvKjbdOPHhvC6HywDmGmVRRtD06wkI= github.com/iti/mrnes v0.0.16/go.mod h1:1P8kC384qaei5i84ZK42VYDrXmRLiYZHmx52yeLL37E= -github.com/iti/pces v0.0.15 h1:wut3GAFRS3Ks8uKhdA/d2w6dqDfD/SD55zgXoLTZqxA= -github.com/iti/pces v0.0.15/go.mod h1:puOlSzKF8W6wXiK6IwSGOjR7S3gGGKpC0fn9JjakXeA= +github.com/iti/pces v0.0.16 h1:+PEhCkaqA2HlBnz+aw1u/Yax/BzxveWicFuQozutd7U= +github.com/iti/pces v0.0.16/go.mod h1:puOlSzKF8W6wXiK6IwSGOjR7S3gGGKpC0fn9JjakXeA= github.com/iti/rngstream v0.2.2 h1:9cfSikwWPW1Yie+RjdJ23uUuMryLu+Ou38/TChYLPZ8= github.com/iti/rngstream v0.2.2/go.mod h1:sf9vdWtEjVW4dxOocgIqbivkNIrfcl10H8jEeeqFNnQ= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= diff --git a/simulator/sim-dir/sim.go b/simulator/sim-dir/sim.go index b5caf99..274cac6 100644 --- a/simulator/sim-dir/sim.go +++ b/simulator/sim-dir/sim.go @@ -1,11 +1,9 @@ package main - import ( "fmt" "github.com/iti/pces" ) -// main gives the entry point func main() { pces.ReadSimArgs() pces.RunExperiment(expCntrl, expCmplt)