def testAvroraCandidate(nescDir, query, outputPath, numNodes, duration, schemaPath, aqRate, deliveryTime, actualBFactor): #Compile the nesC exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): return AvroraLib.generateODs(nescDir) for i in range(0, optNumAvroraRuns): if optNumAvroraRuns > 1: report("Avrora simulation run #%d for candidate %s\n" % (i, outputPath)) #run avrora simulation (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation(nescDir, outputPath, query, numNodes, simulationDuration=duration, networkFilePath=None) #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % ( outputPath, query) checkTupleCount.checkResults(query, traceFilePath, schemaPath, aqRate, actualBFactor, duration) #add points to graph here #TODO: exp dependent - deliveryTime if (optXValType == 'acq'): addtoEnergyGraphs(query, aqRate, outputPath, duration, query) elif (optXValType == 'del'): addtoEnergyGraphs(query, deliveryTime, outputPath, duration, query)
def testTossimCandidate(nescDir, traceFilePath, query, numNodes, duration, outputPath, schemaPath, aqRate): #compile the nesc exitVal = TossimLib.compileNesCCode(nescDir) if (exitVal != 0): return; #run tossim simulation exitVal = TossimLib.runSimulation(nescDir, traceFilePath, query, numNodes, simulationDuration = (duration + optTossimSyncTime)) if (exitVal != 0): return; #check all tuples present in Tossim simulation queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % (outputPath, query) actualBFactor = SneeqlLib.getBufferingFactor(queryPlanSummaryFile) checkTupleCount.checkResults(query, traceFilePath, schemaPath, aqRate, actualBFactor, duration)
def testAvroraCandidate(nescDir, query, outputPath, numNodes, duration, schemaPath, aqRate, avroraNetFile, rtscore_lifetime): #Compile the nesC exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): return AvroraLib.generateODs(nescDir) for i in range(0, optNumAvroraRuns): if optNumAvroraRuns > 1: report("Avrora simulation run #%d for candidate %s\n" % (i, outputPath)) #run avrora simulation (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation( nescDir, outputPath, query, numNodes, simulationDuration=duration, networkFilePath=avroraNetFile) #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % ( outputPath, query) actualBFactor = SneeqlLib.getBufferingFactor(queryPlanSummaryFile) checkTupleCount.checkResults(query, traceFilePath, schemaPath, aqRate, actualBFactor, duration) #Report total energy consumption siteLifetimeRankFile = "%s/site-lifetime-rank.csv" % nescDir (sumEnergy, maxEnergy, averageEnergy, radioEnergy, cpu_cycleEnergy, sensorEnergy, otherEnergy, networkLifetime) = AvroraLib.computeEnergyValues( nescDir, duration, inputFile="avrora-out.txt", ignoreLedEnergy=True, siteLifetimeRankFile=siteLifetimeRankFile) report("The total energy consumption is %f" % (sumEnergy)) report("The lifetime for this network is %f" % (networkLifetime)) (agendaName, rtName, score) = getRTScore(nescDir, query, outputPath) agendaID = agendaName.split("-")[2] rtscore_lifetime.add(1, sumEnergy, agendaID)
def testAvroraCandidate(nescDir, query, outputPath, numNodes, duration, schemaPath, aqRate, avroraNetFile): #Compile the nesC exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): return; AvroraLib.generateODs(nescDir) for i in range(0, optNumAvroraRuns): if optNumAvroraRuns > 1: report("Avrora simulation run #%d for candidate %s\n" % (i, outputPath)) #run avrora simulation (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation(nescDir, outputPath, query, numNodes, simulationDuration = duration, networkFilePath = avroraNetFile) #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % (outputPath, query) actualBFactor = SneeqlLib.getBufferingFactor(queryPlanSummaryFile) checkTupleCount.checkResults(query, traceFilePath, schemaPath, aqRate, actualBFactor, duration)
def testTossimCandidate(nescDir, traceFilePath, query, numNodes, duration, outputPath, schemaPath, aqRate): #compile the nesc exitVal = TossimLib.compileNesCCode(nescDir) if (exitVal != 0): return; #run tossim simulation exitVal = TossimLib.runSimulation(nescDir, traceFilePath, query, numNodes, simulationDuration = (duration + optTossimSyncTime)) if (exitVal != 0): return; #check all tuples present in Tossim simulation queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.csv" % (outputPath, query) candidateInfo = getCandidateSummaryInformation(nescDir, query, outputPath) alpha = int(candidateInfo['alpha-ms']) bufferingFactor = int(candidateInfo['beta']) checkTupleCount.checkResults(query, traceFilePath, schemaPath, alpha, bufferingFactor, duration)
def testAvroraCandidate(nescDir, query, outputPath, numNodes, duration, schemaPath, aqRate, avroraNetFile, alphaGraph, deltaGraph, epsilonGraph, lambdaGraph): #Compile the nesC exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): return; AvroraLib.generateODs(nescDir) candidateInfo = getCandidateSummaryInformation(nescDir, query, outputPath) candidateInfo['total-energy'] = [] candidateInfo['network-lifetime'] = [] alpha = int(candidateInfo['alpha-ms']) bufferingFactor = int(candidateInfo['beta']) duration = int((float(optNumAgendaEvals) * float(alpha) * float(bufferingFactor)) / 1000.0) for i in range(0, optNumAvroraRuns): if optNumAvroraRuns > 1: report("Avrora simulation run #%d for candidate %s\n" % (i, outputPath)) #run avrora simulation (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation(nescDir, outputPath, query, numNodes, simulationDuration = duration, networkFilePath = avroraNetFile) #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % (outputPath, query) checkTupleCount.checkResults(query, traceFilePath, schemaPath, alpha, bufferingFactor, duration) #Report total energy consumption siteLifetimeRankFile = "%s/site-lifetime-rank.csv" % nescDir (sumEnergy, maxEnergy, averageEnergy, radioEnergy, cpu_cycleEnergy, sensorEnergy, otherEnergy, networkLifetime) = AvroraLib.computeEnergyValues(nescDir, duration, inputFile = "avrora-out.txt", ignoreLedEnergy = True, siteLifetimeRankFile = siteLifetimeRankFile) lifetimeDays = UtilLib.secondsToDays(networkLifetime) #Put this into avrora lib so rank file has it too report ("The total energy consumption is %f" % (sumEnergy)) normSumEnergy = (float(sumEnergy) / float(duration)) * float(optQueryDuration) #to do: use new function (below) report ("The normalized total energy consumption is %f" % (normSumEnergy)) report ("The lifetime for this network is %f" % (lifetimeDays)) candidateInfo['total-energy'].append(float(normSumEnergy)) candidateInfo['network-lifetime'].append(float(lifetimeDays)) print "DEBUG: testAvroraCandidate.candidateInfo = " + str(candidateInfo) return candidateInfo
def mainLoop(): queryFile = queryMap[optQuery] networkFile = networkMap[optNetworkSize] heteroNet = (optNetworkType == 'B') schemaFile = numSourcesMap[optNetworkSize + '_' + optNumSources] qosFile = optGoalMap[optOptGoal] overallOutputDir = optOutputRoot + '/' + optQuery + '-' + optNetworkSize + 'n-type' + optNetworkType + '-' + optNumSources + 's-' + optOptGoal duration = 100 # for nn in range(optMinNN,optMaxNN+1): for nn in [0, 1, 3, 5, 10, 15, 20]: runOutputDir = overallOutputDir + '/nn' + str(nn) invokeQueryOptimizer(runOutputDir, queryFile, networkFile, heteroNet, schemaFile, qosFile, nn) summary = parseOutFile(runOutputDir + '/' + optQuery + '/query-plan/matlab/wheresched/out' + str(nn) + '.txt') if optOptGoal == 'min_delivery': #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % ( runOutputDir, optQuery) deliveryTime = SneeqlLib.getDeliveryTime(queryPlanSummaryFile) logToDataFile(overallOutputDir, nn, summary['min_f'], float(deliveryTime), summary['num DAFs considered']) else: #Compile the nesC nescDir = runOutputDir + '/' + optQuery + '/avrora1' exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): reportError("Error compiling avrora nesC code") return AvroraLib.generateODs(nescDir) #Invoke Avrora simulation avroraNetFile = UtilLib.winpath( os.getenv('SNEEQLROOT')) + '\\\\' + networkFile.replace( '.xml', '.top') (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation( nescDir, runOutputDir, optQuery, int(optNetworkSize), simulationDuration=duration, networkFilePath=avroraNetFile) #Check query results schemaPath = os.getenv('SNEEQLROOT') + '/' + schemaFile checkTupleCount.checkResults(optQuery, traceFilePath, schemaPath, 10000, 1, duration) #Report total energy consumption siteLifetimeRankFile = "%s/site-lifetime-rank.csv" % nescDir (sumEnergy, maxEnergy, averageEnergy, radioEnergy, cpu_cycleEnergy, sensorEnergy, otherEnergy, networkLifetime) = AvroraLib.computeEnergyValues( runOutputDir, duration, inputFile="avrora-out.txt", ignoreLedEnergy=True, siteLifetimeRankFile=siteLifetimeRankFile) report("The total energy consumption is %f" % (sumEnergy)) report("The lifetime for this network is %f" % (networkLifetime)) #seems to be in seconds if optOptGoal == 'min_energy': logToDataFile(overallOutputDir, nn, summary['min_f'], float(sumEnergy), summary['num DAFs considered']) else: logToDataFile(overallOutputDir, nn, summary['min_f'], float(networkLifetime), summary['num DAFs considered'])
def testAvroraCandidate(nescDir, query, outputPath, numNodes, duration, schemaPath, aqRate, avroraNetFile, alphaGraph, deltaGraph, epsilonGraph, lambdaGraph): #Compile the nesC exitVal = AvroraLib.compileNesCCode(nescDir) if (exitVal != 0): return AvroraLib.generateODs(nescDir) for i in range(0, optNumAvroraRuns): if optNumAvroraRuns > 1: report("Avrora simulation run #%d for candidate %s\n" % (i, outputPath)) #run avrora simulation (avroraOutputFile, traceFilePath) = AvroraLib.runSimulation( nescDir, outputPath, query, numNodes, simulationDuration=duration, networkFilePath=avroraNetFile) #check all tuples present queryPlanSummaryFile = "%s/%s/query-plan/query-plan-summary.txt" % ( outputPath, query) actualBFactor = SneeqlLib.getBufferingFactor(queryPlanSummaryFile) checkTupleCount.checkResults(query, traceFilePath, schemaPath, aqRate, actualBFactor, duration) #Report total energy consumption siteLifetimeRankFile = "%s/site-lifetime-rank.csv" % nescDir (sumEnergy, maxEnergy, averageEnergy, radioEnergy, cpu_cycleEnergy, sensorEnergy, otherEnergy, networkLifetime) = AvroraLib.computeEnergyValues( nescDir, duration, inputFile="avrora-out.txt", ignoreLedEnergy=True, siteLifetimeRankFile=siteLifetimeRankFile) report("The total energy consumption is %f" % (sumEnergy)) report("The lifetime for this network is %f" % (networkLifetime)) candidateInfo = getCandidateSummaryInformation(nescDir, query, outputPath) print candidateInfo rtID = candidateInfo['rt-id'].split("-")[2] #TODO: Cross-candidate comparison: plot acquisition interval score vs min possible acq interval alphaGraph.add(float(candidateInfo['rt-alpha-score']), float(candidateInfo['pi-ms']) / 1000.0, rtID) #TODO: Cross-candidate comparison: plot delivery time score vs simulated total energy deltaGraph.add(float(candidateInfo['rt-delta-score']), float(candidateInfo['delta-ms']) / 1000.0, rtID) #TODO: Cross-candidate comparison: plot total energy score vs simulated total energy epsilonGraph.add(float(candidateInfo['rt-epsilon-score']), float(sumEnergy), rtID) #TODO: Cross-candidate comparison: plot lifetime score vs simulated lifetime lambdaGraph.add(float(candidateInfo['rt-lambda-score']), UtilLib.secondsToDays(networkLifetime), rtID)