| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- # StarPU --- Runtime system for heterogeneous multicore architectures.
 
- #
 
- # Copyright (C) 2014-2020  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
 
- # Copyright (C) 2014       Université Joseph Fourier
 
- #
 
- # StarPU is free software; you can redistribute it and/or modify
 
- # it under the terms of the GNU Lesser General Public License as published by
 
- # the Free Software Foundation; either version 2.1 of the License, or (at
 
- # your option) any later version.
 
- #
 
- # StarPU is distributed in the hope that it will be useful, but
 
- # WITHOUT ANY WARRANTY; without even the implied warranty of
 
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
- #
 
- # See the GNU Lesser General Public License in COPYING.LGPL for more details.
 
- #
 
- # R script that is giving statistical analysis of the paje trace
 
- # Can be called from the command line with:
 
- # Rscript $this_script $range1 $range2 $name $outputfile $inputfiles
 
- # Package containing ddply function
 
- library(plyr)
 
- # Function for reading .csv file
 
- read_df <- function(file,range1,range2) {
 
-   df<-read.csv(file, header=FALSE, strip.white=TRUE)
 
-   names(df) <- c("Nature","ResourceId","Type","Start","End","Duration", "Depth", "Value")
 
-   df = df[!(names(df) %in% c("Nature","Type", "Depth"))]
 
- # Changing names if needed:
 
-   df$Value <- as.character(df$Value)
 
-   df$Value <- ifelse(df$Value == "F", "Freeing", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "A", "Allocating", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "W", "WritingBack", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "No", "Nothing", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "I", "Initializing", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "D", "Deinitializing", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Fi", "FetchingInput", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Po", "PushingOutput", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "C", "Callback", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "B", "Overhead", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Sl", "Sleeping", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "P", "Progressing", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "U", "Unpartitioning", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Ar", "AllocatingReuse", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "R", "Reclaiming", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Co", "DriverCopy", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "CoA", "DriverCopyAsync", as.character(df$Value))
 
-   df$Value <- ifelse(df$Value == "Su", "SubmittingTask", as.character(df$Value))
 
- # Considering only the states with a given name
 
-   if (name != "All")
 
-     df<-df[df$Value %in% name[[1]],]
 
-   
 
- # Aligning to begin time from 0
 
-   m <- min(df$Start)
 
-   df$Start <- df$Start - m
 
-   df$End <- df$Start+df$Duration
 
- # Taking only the states inside a given range
 
-   df <- df[df$Start>=range1 & df$End<=range2,]
 
- # Return data frame
 
-   df
 
- }
 
- #########################################
 
- #########################################
 
- # Main
 
- #########################################
 
- # Reading command line arguments
 
- args <- commandArgs(trailingOnly = TRUE)
 
- range1<-as.numeric(args[1])
 
- if (range1==-1)
 
-   range1<-Inf
 
- range2<-as.numeric(args[2])
 
- if (range2==-1)
 
-   range2<-Inf
 
- name<-strsplit(args[3], ",")
 
- outputfile<-args[4]
 
- # Reading first file
 
- filename<-args[5]
 
- df<-read_df(filename,range1,range2)
 
- # Getting summary of the first file
 
- dfout<-ddply(df, c("Value"), summarize, Events_ = length(as.numeric(Duration)), Duration_ = sum(as.numeric(Duration)))
 
- names(dfout)<-c("Value",sprintf("Events_%s",filename),sprintf("Duration_%s",filename))
 
- i=6
 
- while (i <= length(args))
 
-   {
 
- # Reading next input file
 
-     filename<-args[i]
 
-     df<-read_df(filename,range1,range2)
 
- # Getting summary of the next file
 
-     dp<-ddply(df, c("Value"), summarize, Events_ = length(as.numeric(Duration)), Duration_ = sum(as.numeric(Duration)))
 
-     names(dp)<-c("Value",sprintf("Events_%s",filename),sprintf("Duration_%s",filename))
 
- # Merging results into one single data frame
 
-     if (nrow(dp)>0)
 
-       {
 
-         if (nrow(dfout)>0)
 
-           dfout<-merge(dfout,dp, by = "Value", all=TRUE)
 
-         else
 
-           dfout<-dp
 
-       }
 
-     
 
-     i <- i+1
 
-   }
 
- # Cosmetics: change NA to 0
 
- dfout[is.na(dfout)] <- 0
 
- # Error: if there is no results for a given range and state
 
- if (nrow(dfout)==0)
 
-   stop("Result is empty!")
 
- # Write results into the new .csv file
 
- write.table(dfout, file=outputfile, row.names=FALSE, sep = ", ")
 
 
  |