class Pwrake::ReportMulti
Public Class Methods
new(list,pattern,options={})
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 5 def initialize(list,pattern,options={}) @reports = list.map do |base| r = Report.new(base,pattern) puts r.base+" elap=#{r.elap}" r end @pattern = pattern @img_fmt = options['REPORT_IMAGE'] || 'png' @elap_img = 'elap.#{@img_fmt}' end
Public Instance Methods
histogram_html()
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 91 def histogram_html html = "" @cmd_rep.each do |cmd,cmd_rep| html << "<p>Statistics of Elapsed time of #{cmd}</p>\n<table>\n" html << "<th>id</th><th>ncore</th>"+Stat.html_th cmd_rep.each do |id,r| s = r.cmd_stat[cmd] html << "<tr><td>#{id}</td><td>#{r.ncore}</td>" + s.html_td + "</tr>\n" end html << "</table>\n" html << "<img src='./#{File.basename(@images[cmd])}'/>\n" end html end
histogram_plot()
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 106 def histogram_plot @cmd_rep.each do |cmd,cmd_rep| IO.popen("gnuplot","r+") do |f| f.puts " set terminal #{@img_fmt} # size 480,360 set output '#{@images[cmd]}' set ylabel 'histogram' set xlabel 'Execution time (sec)' set logscale x set title '#{cmd}'" a = [] ncores = cmd_rep.keys ncores.each_with_index{|n,i| a << "'-' w histeps ls #{i+1} title ''" a << "'-' w lines ls #{i+1} title '#{n}'" } f.puts "plot "+ a.join(',') cmd_rep.each do |ncore,r| s = r.cmd_stat[cmd] 2.times do s.hist_each do |x1,x2,y| x = Math.sqrt(x1*x2) f.printf "%f %d\n", x, y end f.puts "e" end end end puts "Histogram plot: #{@images[cmd]}" end end
histogram_plot2()
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 139 def histogram_plot2 @cmd_rep.each do |cmd,cmd_rep| IO.popen("gnuplot","r+") do |f| f.puts " set terminal #{@img_fmt} # size 480,360 set output '#{@images[cmd]}' set nohidden3d set palette rgb 33,13,10 set pm3d set ticslevel 0 unset colorbox set yrange [#{cmd_rep.size}:0] set logscale x set title '#{cmd}'" a = [] ncores = cmd_rep.keys.sort ncores.each_with_index{|n,i| a << "'-' w lines ls #{i+1} title '#{n} cores'" } f.puts "splot "+ a.join(',') ncores.each_with_index do |ncore,i| s = cmd_rep[ncore] y = i s.hist_each do |x1,x2,z| f.printf "%g %g 0\n", x1,y f.printf "%g %g 0\n", x2,y f.printf "%g %g 0\n", x2,y end f.puts "" s.hist_each do |x1,x2,z| f.printf "%g %g %g\n", x1,y,z f.printf "%g %g %g\n", x2,y,z f.printf "%g %g 0\n", x2,y,z end f.puts "" y = i+1 s.hist_each do |x1,x2,z| f.printf "%g %g %g\n", x1,y,z f.printf "%g %g %g\n", x2,y,z f.printf "%g %g 0\n", x2,y,z end f.puts "" s.hist_each do |x1,x2,z| f.printf "%g %g 0\n", x1,y f.printf "%g %g 0\n", x2,y f.printf "%g %g 0\n", x2,y end f.puts "e" i = i+1 end end puts "Histogram plot: #{@images[cmd]}" end end
plot_elap()
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 44 def plot_elap a = @reports.map{|r| r.ncore * r.elap}.min elaps = @reports.map{|r| r.elap} logmin = Math.log10(elaps.min) logmax = Math.log10(elaps.max) mid = (logmin+logmax)/2 wid = (logmax-logmin).ceil*0.5 ymin = 10**(mid-wid) ymax = 10**(mid+wid) IO.popen("gnuplot","r+") do |f| f.puts " set terminal #{@img_fmt} size 640,480 set output '#{@elap_img}' set xlabel 'ncore' set ylabel 'time (sec)' set yrange [#{ymin}:#{ymax}] set logscale xy plot #{a}/x,'-' w lp lw 2 ps 2 title 'elapsed time' " @reports.sort_by{|r| r.ncore}.each do |r| f.puts "#{r.ncore} #{r.elap}" end f.puts "e" end puts "Ncore-time plot: "+@elap_img end
report(stat_html)
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 16 def report(stat_html) if true @reports.each do |r| r.report_html end plot_elap end html = Report::HTML_HEAD + "<body><h1>Pwrake Statistics</h1>\n" html << "<h2>Log files</h2>\n" html << "<table>\n" html << "<tr><th>log file</th><th>id</th><th>ncore</th><th>elapsed time(sec)</th><tr>\n" @reports.each do |r| html << "<tr><td><a href='#{r.html_file}'>#{r.base}</a></td>" html << "<td>#{r.id_str}</td><td>#{r.ncore}</td><td>#{r.elap}</td><tr>\n" end html << "</table>\n" html << "<h2>Elapsed time</h2>\n" html << "<img src='./#{File.basename(@elap_img)}' align='top'/></br>\n" html << "<h2>Histogram of Execution time</h2>\n" html << report_histogram() html << "</body></html>\n" File.open(stat_html,"w") do |f| f.puts html end end
report_histogram()
click to toggle source
# File lib/pwrake/report/report_multi.rb, line 71 def report_histogram @images = {} @cmd_rep = {} @reports.each do |r| r.cmd_stat.each do |cmd,stat| if stat.n > 2 @cmd_rep[cmd] ||= {} @cmd_rep[cmd][r.id_str] = r # stat end end end @cmd_rep.each_key do |cmd| @images[cmd] = 'hist_'+cmd.gsub(/[\/.]/,'_')+'.'+@img_fmt end histogram_plot histogram_html end