Ignore:
Timestamp:
Aug 28, 2014, 6:47:35 PM (8 years ago)
Author:
cfuguet
Message:

reconfiguration/tsar_generic_iob: adding script for plotting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/platforms/tsar_generic_iob/scripts/parse.py

    r777 r782  
     1#!/usr/bin/python
     2# @author Cesar Fuguet <cesar.fuguet-tortolero@lip6.fr>
     3# @date   28 August, 2014
     4# @desc   generate output file containing a table with the format below:
     5#
     6#                              fault configurations
     7#                   | faultconfig 0 | faultconfig 1 | faultconfig M
     8#               ----------------------------------------------------
     9#               4   |    cycles     |    cycles     |    cycles
     10#  # clusters   16  |    cycles     |    cycles     |    cycles
     11#               64  |    cycles     |    cycles     |    cycles
     12#               N   |    cycles     |    cycles     |    cycles
     13
    114import os
    215import sys
    316
    4 def parse_ffstend(configs, confpath, outpath):
     17def parse_ffstend(configs, faultconfigs, confpath, outpath):
    518    # write header
    619    ffst_end = open(outpath, "w")
    7     ffst_end.writelines([
    8         "#  ffst end (cycles)\n",
    9         "#  clusters cycles\n",
    10         "\n"])
     20    ffst_end.write("#  ffst end (cycles)\n")
    1121
    1222    # repeat while configurations is not empty
     23    quit = 0
    1324    for x,y in configs:
    14         confdir = confpath + "/config_{}c/".format(x*y)
     25        ffst_end.write("\n")
     26        ffst_end.write(str(x*y))
     27        for f in xrange(faultconfigs):
     28            temp = "config_{0}c{1}f/".format(x*y, f)
     29            confdir = os.path.join(confpath, temp)
    1530
    16         #  parse term log and get relevant information
    17         with open(confdir + "term", "r") as termlog:
     31            #  parse term log and get relevant information
     32            termname = os.path.join(confdir, "term")
     33            try:
     34                termlog = open(termname, "r")
     35            except IOError as e:
     36                print "IOError {0}: {1}".format(termname, e.strerror)
     37                quit = 1
     38                break
     39
     40            found = False
    1841            for line in termlog:
    1942                partitions = line.partition(':')
    2043                if partitions[0].strip() == "FFST (END)":
     44                    found = True
    2145                    value = int(partitions[2])
    22                     ffst_end.write("{} {}\n".format(x*y, value))
     46                    ffst_end.write("   {0}".format(value))
    2347                    break
    2448
     49            if not found: ffst_end.write("   -1")
     50            # end for faultconfig
     51
     52        if quit: break
     53        # end for configs
     54
    2555    ffst_end.close()
     56    # end def parse_ffstend
    2657
    2758if __name__ == "__main__":
     
    3263    configs.append([16, 16])
    3364
    34     assert len(sys.argv) > 2, "Introduce config path and output path"
     65    assert len(sys.argv) > 3,\
     66           "Introduce number of faulty configs, config path and output path"
    3567
    36     parse_ffstend(configs, sys.argv[1], sys.argv[2])
     68    parse_ffstend(configs, int(sys.argv[1]), sys.argv[2], sys.argv[3])
     69
     70# vim: tabstop=4 : softtabstop=4 : shiftwidth=4 : expandtab
Note: See TracChangeset for help on using the changeset viewer.