module Pwrake::MCGP

Public Class Methods

graph_partition(host_map, target=nil) click to toggle source
# File lib/pwrake/misc/mcgp.rb, line 8
def graph_partition(host_map, target=nil)
  t1 = Pwrake.clock
  wgts = host_map.group_weight_sum
  if wgts.size > 1
    list = wgts.size.times.to_a
    g = GraphTracerGroup.new([list],[wgts])
    trace(g,target)
    g.part_graph
    #g.write_dot('dag1.dot')
    #return
  end

  #$debug=true

  list = host_map.group_hosts
  wgts = host_map.group_core_weight
  g = GraphTracerNode.new(list,wgts)
  trace(g,target)
  g.part_graph
  t2 = Pwrake.clock
  Pwrake::Log.info "Time for TOTAL Graph Partitioning: #{t2-t1} sec"
  #g.write_dot('dag2.dot')
  #exit
end
trace(g,target) click to toggle source
# File lib/pwrake/misc/mcgp.rb, line 34
def trace(g,target)
  if target
    g.trace(target)
  else
    Rake.application.top_level_tasks.each do |t|
      g.trace(t)
    end
  end
end

Private Instance Methods

graph_partition(host_map, target=nil) click to toggle source
# File lib/pwrake/misc/mcgp.rb, line 8
def graph_partition(host_map, target=nil)
  t1 = Pwrake.clock
  wgts = host_map.group_weight_sum
  if wgts.size > 1
    list = wgts.size.times.to_a
    g = GraphTracerGroup.new([list],[wgts])
    trace(g,target)
    g.part_graph
    #g.write_dot('dag1.dot')
    #return
  end

  #$debug=true

  list = host_map.group_hosts
  wgts = host_map.group_core_weight
  g = GraphTracerNode.new(list,wgts)
  trace(g,target)
  g.part_graph
  t2 = Pwrake.clock
  Pwrake::Log.info "Time for TOTAL Graph Partitioning: #{t2-t1} sec"
  #g.write_dot('dag2.dot')
  #exit
end
trace(g,target) click to toggle source
# File lib/pwrake/misc/mcgp.rb, line 34
def trace(g,target)
  if target
    g.trace(target)
  else
    Rake.application.top_level_tasks.each do |t|
      g.trace(t)
    end
  end
end