Пример #1
0
def extractTracesFromSinglePKL(TrainingSetConfigurations, TrainingConfSize,
                               TrainingConfFilename, OutputFilenamem,
                               verboseDebug):
    """    
    Receive Encoding of traces for each  configuration    
    """

    allTracesAutonomoose = loadObjectFromPickle(
        getSingleFilenameWithAllTraces())

    GlobalTmpArray = []

    for configurationId in TrainingSetConfigurations:
        print("Processing {0}".format(configurationId))
        #        print ("Configuration {0}, Number of Traces {1} ".format(configurationId, len(allTracesAutonomoose[configurationId])))

        lstAllTracesForConf = allTracesAutonomoose[configurationId]

        dctTransitionsToExecutions = {}

        for anAutonomoseExecutionTrace in lstAllTracesForConf:
            #Each trace is AutonomooseTraces.ExecutionTraceAutonomoose
            anAutonomoseExecutionTrace.addExecutedTransitionsToDictionary(
                dctTransitionsToExecutions)


#            print ("After processing an  execution of type {0}, we have a dicitonary with {1} elements".format(type(anAutonomoseExecutionTrace), \
#                   sum([len(dctTransitionsToExecutions[x]) for x in dctTransitionsToExecutions.keys()])))

        print(dctTransitionsToExecutions.keys())

        GlobalTmpArray.append(dctTransitionsToExecutions)

    saveObjectToPickleFile(OutputFilename, GlobalTmpArray)
def generatePerfumeTracesAutonomoose(LstConfigurationIds, sourceFolder):
    """
    Extract a transe for a single Autonomoose configuration (or list of Autonomoose configurations.) 
    
    
    TODO  -- how to partition an Autonomoose trace into "mini" traces.
    """

    if sourceFolder.find("First") != -1:
        tmpTraceShorthand = "first"
    elif sourceFolder.find("Second") != -1:
        tmpTraceShorthand = "second"
    else:
        tmpTraceShorthand = "third"

    allTraces = loadObjectFromPickle(getSingleFilenameWithAllTraces())

    for configurationId in LstConfigurationIds:
        AutonomooseTraceForConfiguration = allTraces[configurationId][0]

        tmpTransList = AutonomooseTraceForConfiguration.getTransitionList()

        filenameToOutputTo = "PerfumeControl/Traces/autonomoose_{0}_configuration_{1}".format(
            tmpTraceShorthand, configurationId)

        countAndPrintAutonomooseLoops(configurationId, tmpTransList,
                                      filenameToOutputTo)
Пример #3
0
def chooseConfigurationsPresentInAllTestSets(traceDirectories=[]):
    chosenConfs = set([])
    trainingSetsAcrossAsSets = []
    trainingSetsAcrossAsLists = []

    for traceFolder in traceDirectories:
        q = loadObjectFromPickle(traceFolder + "test_conf_rep_1.pkl")
        trainingSetsAcrossAsSets.append(set(q))
        trainingSetsAcrossAsLists.append(q)

    while (len(chosenConfs) < 10):
        potentialConfiguration = random.choice(trainingSetsAcrossAsLists[0])

        if (potentialConfiguration not in chosenConfs) and \
            (potentialConfiguration  in trainingSetsAcrossAsSets[1]) and \
            (potentialConfiguration  in trainingSetsAcrossAsSets[2]):
            chosenConfs.add(potentialConfiguration)
    return chosenConfs
Пример #4
0
        print (len(inputParameters))
        
        print(" Incorrect Usage. Requires five parameters: Subject System, sampleTrainFilename, confTrainFilename, CvResultsFilenamem, RegressorOutputFilename")
        
        exit()        
        
    return SubjectSystem, sampleTrainFilename, confTrainFilename, CVResultsFilename, RegressorOutputFilename


if __name__ == "__main__":

    SubjectSystem, sampleTrainFilename, confTrainFilename, CVResultsFilename, RegressorOutputFilename = parseRuntimeParemeters(sys.argv)
    
    bestRegressorPerTransition = getBestMethodPerTransition(CVResultsFilename)
    
    trainDataset, trainOrderedConfs  = loadObjectFromPickle(sampleTrainFilename), \
        loadObjectFromPickle(confTrainFilename)
        
    if SubjectSystem == MLConstants.x264Name:
 
        listTransitionToSample = getAllTransitionsIdsList()
        
    elif SubjectSystem == MLConstants.autonomooseName:
        
        listTransitionToSample = getListOfAvailableTransitionsAutonomoose(trainDataset)
        
    RegressorList = []
    for transitionId in listTransitionToSample:
        if transitionId in bestRegressorPerTransition.keys():
            newRegressor = crateRegressorWrapperFromTuple(transitionId, bestRegressorPerTransition[transitionId])
        else:
Пример #5
0
    else:
        print("Incorrect usage -  requires 6 filenames parameters: Subject System, train data set," \
              "train configurations, results of CV, test dataset, test configurations")
        exit(0)

    return SubjectSystem, trainDatasetFilename, trainConfFilename, CvResultsFilename, testDatasetFilename, testConfFilename


if __name__ == "__main__":

    SubjectSystem, trainDatasetFilename, trainConfFilename, CvResultsFilename, testDatasetFilename, testConfFilename = parseRuntimeParemeters(
        sys.argv)

    bestRegressorPerTransition = getBestMethodPerTransition(CvResultsFilename)

    testDataset, testOrderedConfs, trainDataset, trainOrderedConfs = loadObjectFromPickle(testDatasetFilename), \
        loadObjectFromPickle(testConfFilename), loadObjectFromPickle(trainDatasetFilename),  loadObjectFromPickle(trainConfFilename)

    if SubjectSystem == MLConstants.x264Name:

        transitionIdList = getAllTransitionsIdsList()

    else:
        # Autonomoose
        transitionIdList = getListOfAvailableTransitionsAutonomoose(
            trainDataset)

    print(
        "Transition Id, YMean_Train, Y_Std_Train, MAE_Train, MAE_Std_Train, YMean_Test, Y_Std_Test, MAE_Test, MAE_Std_Test"
    )
    for transitionId in transitionIdList:
Пример #6
0
def analyzeOverallExecutionTimesAutonomoose(regressorsArray,
                                            testConfigurationsList,
                                            transitionToRegressorMapping,
                                            transitionToConfArrayTimeTaken):
    """
    Autonomoose all traces are in a single file.
    
    Calculate actual execution time for trace of  autonomoose, as well as predicted execution time.
    """
    listActualTimes = []
    listPredictedTimes = []

    allTraces = loadObjectFromPickle(getSingleFilenameWithAllTraces())

    #    print (len(testConfigurationsList))

    for aConfId, offsetIndex in zip(testConfigurationsList,
                                    range(0, len(testConfigurationsList))):
        #print("Computing for Configuration {0} with offset Index = {1}".format(aConfId, offsetIndex))

        for repetitionId in range(0, 10):
            CurrentExecutionTrace = allTraces[aConfId][repetitionId]

            actualExecutionTime = getOverallRealTimeForASingleTraceAutonomoose(
                CurrentExecutionTrace, aConfId)

            transitionsCounts = CurrentExecutionTrace.getPerTransitionCounts()

            #print(transitionsCounts)

            predictedTimeTaken = 0.0

            for aTransitionId in transitionsCounts.keys():
                predictedTimeTaken = predictedTimeTaken + transitionsCounts[
                    aTransitionId] * transitionToConfArrayTimeTaken[
                        aTransitionId][offsetIndex]

            if not (type(predictedTimeTaken) == float):
                print("{0},{1},{2}".format(aConfId, actualExecutionTime,
                                           predictedTimeTaken[0]))
            else:

                print("{0},{1},{2}".format(aConfId, actualExecutionTime,
                                           predictedTimeTaken))

            listActualTimes.append(actualExecutionTime)

            listPredictedTimes.append(predictedTimeTaken)

    npActualTimes = np.array([np.array([x]) for x in listActualTimes])
    npPredictedTimes = np.array(listPredictedTimes)

    meanMAE, stdMAE = mean_absolute_error_and_stdev_eff(
        npActualTimes, npPredictedTimes)

    print("Mean_MAE,MAE_STDEV")

    if meanMAE.shape == (1, ):
        print("{0},{1}".format(meanMAE[0], stdMAE[0]))
    else:
        print("{0},{1}".format(meanMAE, stdMAE))
Пример #7
0
    print("Mean_MAE,MAE_STDEV")

    if meanMAE.shape == (1, ):
        print("{0},{1}".format(meanMAE[0], stdMAE[0]))
    else:
        print("{0},{1}".format(meanMAE, stdMAE))


if __name__ == "__main__":

    SubjectSystem, TraceSourceFolder, regressorInputFilename, testConfFilename = parseRuntimeParemeters(
        sys.argv)

    setBaseTracesSourceFolder(TraceSourceFolder)

    regressorsArray, testConfigurationsList = loadObjectFromPickle(
        regressorInputFilename), loadObjectFromPickle(testConfFilename)

    transitionToRegressorMapping = getRegressorToTransitionIdMapping(
        regressorsArray)

    transitionToConfArrayTimeTaken = {}

    for transitionId in transitionToRegressorMapping.keys():
        if SubjectSystem == MLConstants.x264Name:
            transitionToConfArrayTimeTaken[transitionId] = getPredictionsForTransitionsOnConfigurationList(testConfigurationsList, \
                                      regressorsArray, transitionToRegressorMapping, transitionId)
        else:
            transitionToConfArrayTimeTaken[transitionId] = getPredictionsForTransitionsOnConfigurationList(testConfigurationsList, \
                                      regressorsArray, transitionToRegressorMapping, transitionId, generateBitsetForOneConfigurationAutonomoose)

    print("Configuration_Id, Actual Execution Time, Predicted Execution Time")
    for transitionId in listTransitionsToSample:

        YSet = getSetOfExecutionTimesAutonomoose(transitionData, transitionId,
                                                 trainingSetConfigurations)

        learnAndCrossValidateForATransitionGeneric(
            transitionId, trainingSetConfigurations, kf, YSet,
            generateBitsetForOneConfigurationAutonomoose)


if __name__ == "__main__":

    SubjectSystem, confFilename, inputFilename = parseRuntimeParemeters(
        sys.argv)

    trainingSetConfigurations = loadObjectFromPickle(confFilename)

    transitionArrayOfDictionary = loadObjectFromPickle(inputFilename)

    assert (len(trainingSetConfigurations) == len(transitionArrayOfDictionary))

    printOutputHeader()

    if SubjectSystem == MLConstants.x264Name:

        learnFromTraininingSetX264(trainingSetConfigurations,
                                   transitionArrayOfDictionary)

    elif SubjectSystem == MLConstants.autonomooseName:

        learnFromTraininingSetAutonomoose(trainingSetConfigurations,
Пример #9
0
def extractAndSampleBySectionsFromTraces(TrainingSetConfigurations,
                                         TrainingConfSize,
                                         TrainingConfFilename, OutputFilenamem,
                                         verboseDebug):
    """
    Generate a file that includes up to 500 000 executions of each transition for each configuraiton in TrainingSetConfigurations.
    """
    if verboseDebug:
        # free only exists in linux
        print("Memory Information at Program Launch ")
        call(["free", "-h"])

    globalCounts = {}

    for outerPart in range(0, NUM_TEMPORARY_PARTS):

        transitionArrayOfDictionary = []

        smallSet = TrainingSetConfigurations[outerPart * 20:(outerPart * 20) +
                                             20]

        if verboseDebug:
            print("At subloop {0}, memory status :".format(outerPart))
            call(["free", "-h"])

        for configurationId in smallSet:

            for repId in range(1, NUM_REPETITIONS_PER_TRACE + 1):

                traceFilename = getFilenameFromConfigurationAndRepetition(
                    configurationId, repId)

                AllTransitions = extractTransitionToBagOfTimesDictionaryFromTraceFile(
                    traceFilename)

                transitionArrayOfDictionary.append(AllTransitions)

        if verboseDebug:
            print(
                "Possible Peak subloop memory at loop  {0}".format(outerPart))
            call(["free", "-h"])

        mergedDictionary = conjoinRepetedDictionaries(
            transitionArrayOfDictionary)

        transitionArrayOfDictionary = []

        if verboseDebug:
            print(
                "Possible Peak subloop memory at loop  {0}".format(outerPart))
            call(["free", "-h"])

        allCounts = calculatePerTransitionsCounts(mergedDictionary)

        if verboseDebug:
            print(allCounts)

        addCountDictionaries(globalCounts, allCounts)

        if verboseDebug:
            print("Will save Dict of length = {0}".format(
                len(mergedDictionary)))

        saveObjectToPickleFile(temporaryFilenameTemplate.format(outerPart),
                               mergedDictionary)

        transitionArrayOfDictionary = []
        AllTransitions = []
        mergedDictionary = []
        allCounts = {}

        if verboseDebug:
            print("Memory After Clean Up")
            call(["free", "-h"])

    if verboseDebug:
        print("Completed")
        print("globalCounts: {0}".format(globalCounts))

    if verboseDebug:
        print("Final Memory Before Shutdown")
        call(["free", "-h"])

    GlobalTmpFinalArray = []
    for outerIndex in range(0, NUM_TEMPORARY_PARTS):
        if verboseDebug:
            print("Memory Start Loading Loop at {0}".format(outerIndex))
            call(["free", "-h"])

        unsampledMergedDictArray = loadObjectFromPickle(
            temporaryFilenameTemplate.format(outerIndex))

        if verboseDebug:
            print("Loading Memory Peak I at {0}".format(outerIndex))
            call(["free", "-h"])

        TmpFinalArrayDict = downSampleToNewMaxExecutions(
            unsampledMergedDictArray, actualCountsDictionary=globalCounts)

        if verboseDebug:
            print("Loading Memory Peak II at {0}".format(outerIndex))
            call(["free", "-h"])

        unsampledMergedDictArray = []

        GlobalTmpFinalArray.extend(TmpFinalArrayDict)

        TmpFinalArrayDict = []

        if verboseDebug:
            print("Reloading Memory Final at {0}".format(outerIndex))
            call(["free", "-h"])

    if verboseDebug:
        print("Saving Final Dictionary of length {0}".format(
            len(GlobalTmpFinalArray)))

    saveObjectToPickleFile(OutputFilename, GlobalTmpFinalArray)
            "Incorrect usage -  requires >= 5 filenames parameters: Subject System, Trace Folder, train conf pkl, test conf pkl, and test conf sampled,  . Optional 2 (or 4)  more for differential sampling, preceeded by subjectName and optional baseName for moose "
        )
        exit(0)

    return SubjectSystem, TraceSourceFolder, confTrainFilename, assesmentConfsFilename, assesmentSampledFilename, \
        useDifferentialSampling, preExistingSampledConfsFilename, preExistingSampledDatasetFilename, useDifferentialSamplingExtra, preExistingSampledConfsFilenameExtra, \
        preExistingSampledDatasetFilenameExtra


if __name__ == "__main__":

    SubjectSystem, TraceSourceFolder, confTrainFilename, assesmentConfsFilename, assesmentSampledFilename, \
        useDifferentialSampling, preExistingSampledConfsFilename, preExistingSampledDatasetFilename, useDifferentialSamplingExtra, preExistingSampledConfsFilenameExtra, \
        preExistingSampledDatasetFilenameExtra = parseRuntimeParemeters(sys.argv)

    confsTrain = loadObjectFromPickle(confTrainFilename)

    setBaseTracesSourceFolder(TraceSourceFolder)

    if SubjectSystem == MLConstants.x264Name:

        confsTest = getComplementSet(confsTrain)

        # X264 only preprocessing.
        dictRatios = getTestSetSamplingRatiosDict()

        if useDifferentialSampling:

            ConfsAleadySampled = loadObjectFromPickle(
                preExistingSampledConfsFilename)
Пример #11
0
def analyzeAutonomooseFSE(trainConfigurationList, testConfigurationsList):
    """
    Analyze execution time of autonomooose

    Parameters
    -----------
    traceExecutionTimesSummaries : Dictionary
    Maps tuples (confId, repetitionId) to execution time (microseconds)       

    trainConfigurationList : List of integers    
    testConfigurationsList : List of integers
    
    Notes
    ------
    
    1. Open all tracess files.
    
    BooleanOptions = [("BEHAVIOR", 4 ), \
                      ("OCCUPANCY", 2),
                      ("WAYPOINTS", 1)]

        Behavior Planner
        Occupancy or Mockupancy Planner
        Waypoints Collection
        Dyn. Object Tracking
        Dyn. Car Tracking.
        Dyn. Person Tracking
        
        
    TODO - REFACTOR to join it into analyzeX264FSE -- strategy pattern.
        
    """
    allTraces = loadObjectFromPickle(getSingleFilenameWithAllTraces())

    vmAutonomoose = generateFullAutonomooseVariabilityModel()

    InfModelAutonomoose = InfluenceModels.InfluenceModel(vmAutonomoose)

    TmpMLSettings = MLSettings.MLSettings()

    TmpMLSettings.useBackward = True


    lstFSETrainConfigurationListing = transformToFSEFormat(trainConfigurationList, vmAutonomoose, \
        ConfigurationIdToBitsetTransformer=generateBitsetForOneConfigurationAutonomoose, \
        BitsetToFseTransformer=transformSingleConfigurationToAutonomooseFSE)

    setNFPValuesForConfigurationListAutonomoose(
        lstFSETrainConfigurationListing, trainConfigurationList, allTraces)

    tmpSubsetSelection = FeatureSubsetSelection.FeatureSubsetSelection(
        InfModelAutonomoose, TmpMLSettings)

    tmpSubsetSelection.setLearningSet(lstFSETrainConfigurationListing)

    tmpSubsetSelection.setValidationSet(
        lstFSETrainConfigurationListing
    )  # Following FSE paper, Learning set is resued as -- 'validation set' --

    tmpSubsetSelection.learn()

    showInfluenceModel = False

    if showInfluenceModel:
        printInfluenceModel(tmpSubsetSelection)

    lstFSETestConfigurationListing = transformToFSEFormat(testConfigurationsList, vmAutonomoose, \
        ConfigurationIdToBitsetTransformer=generateBitsetForOneConfigurationAutonomoose, \
        BitsetToFseTransformer=transformSingleConfigurationToAutonomooseFSE)

    #
    #
    #
    # CALCULATING NMAE WITHOUT USING AVERAGING.

    averagingTestSet = False

    if averagingTestSet == True:
        setNFPValuesForConfigurationListAutonomoose(
            lstFSETestConfigurationListing, testConfigurationsList, allTraces)

        lstMeasuredValues = [
            x.getNfpValue() for x in lstFSETestConfigurationListing
        ]

        lstEstimatedValues = [
            tmpSubsetSelection.infModel.estimate(x)
            for x in lstFSETestConfigurationListing
        ]
    else:
        lstMeasuredValues = []
        for aConfId in testConfigurationsList:
            for repetitionId in range(0, 10):

                executedTimes = getOverallRealTimeForASingleTraceAutonomoose(
                    allTraces[aConfId][repetitionId], aConfId)

                lstMeasuredValues.append(executedTimes)

        lstEstimatedValues = [
            tmpSubsetSelection.infModel.estimate(x)
            for x in lstFSETestConfigurationListing
        ]

        tmpLstEstimatedValues = []
        for estimatedVal in lstEstimatedValues:
            for i in range(0, 10):
                tmpLstEstimatedValues.append(estimatedVal)

        lstEstimatedValues = tmpLstEstimatedValues

    lstMeasuredValuesNp = np.array(lstMeasuredValues)
    lstEstimatedValuesNp = np.array(lstEstimatedValues)

    MAETestMean, MAETestStd = mean_absolute_error_and_stdev_eff(
        lstMeasuredValuesNp, lstEstimatedValuesNp)
    MEANTestVal = np.mean(lstMeasuredValuesNp)

    NormalizedMae = 100 * (MAETestMean / MEANTestVal)

    print("MAE_TEST_MEAN, MAE_TEST_STD, MEAN_TEST, NOMRALIZED_MAE (%) ")
    print("{0},\t {1},\t {2},\t {3}".format(MAETestMean, MAETestStd,
                                            MEANTestVal, NormalizedMae))
Пример #12
0

if __name__ == "__main__":
    """
    Execute FSE paper for X264 / Autonomooose.    
    
    
    Testing --
    
    akiyo/traceExecutionTimesForAll.pkl
    
    """
    SubjectSystem, trainConfFilename, testConfFilename, traceSummarizedTimesFilenameOrDirectoryName = parseRuntimeParemeters(
        sys.argv)

    trainConfigurationList, testConfigurationsList = loadObjectFromPickle(trainConfFilename), \
        loadObjectFromPickle(testConfFilename)

    if SubjectSystem == MLConstants.x264Name:

        traceExecutionTimesSummaries = loadObjectFromPickle(
            traceSummarizedTimesFilenameOrDirectoryName)

        analyzeX264FSE(trainConfigurationList, testConfigurationsList,
                       traceExecutionTimesSummaries)

    else:
        #traceSummarizedTimesFilenameOrDirectoryName "../FullTraces/autonomooseFirst/"

        setBaseTracesSourceFolder(traceSummarizedTimesFilenameOrDirectoryName)