class Pwrake::TaskProperty

Attributes

allow[R]
deny[R]
disable_steal[R]
exclusive[R]
ncore[R]
order_allow_deny[R]
reserve[R]
retry[R]
subflow[RW]

Public Instance Methods

accept_host(host_info) click to toggle source
# File lib/pwrake/task/task_property.rb, line 103
def accept_host(host_info)
  return true unless host_info
  if @disable_steal && host_info.steal_flag
    #Log.debug("@disable_steal && host_info.steal_flag")
    return false
  end
  hn = host_info.name
  if @allow
    if @deny
      if @order_allow_deny
        return false if !File.fnmatch(@allow,hn) || File.fnmatch(@deny,hn)
      else
        return false if File.fnmatch(@deny,hn) && !File.fnmatch(@allow,hn)
      end
    else
      return false if !File.fnmatch(@allow,hn)
    end
  else
    if @deny
      return false if File.fnmatch(@deny,hn)
    end
  end
  return true
end
merge(prop) click to toggle source
# File lib/pwrake/task/task_property.rb, line 62
def merge(prop)
  @ncore = prop.ncore if prop.ncore
  @exclusive = prop.exclusive if prop.exclusive
  @reserve = prop.reserve if prop.reserve
  @allow = prop.allow if prop.allow
  @deny = prop.deny if prop.deny
  @order_allow_deny = prop.order_allow_deny if prop.order_allow_deny
  @retry = prop.retry if prop.retry
  @disable_steal = prop.disable_steal if prop.disable_steal
  @subflow = prop.subflow if prop.subflow
end
parse_description(description) click to toggle source
# File lib/pwrake/task/task_property.rb, line 9
def parse_description(description)
  if /\bn_?cores?[=:]\s*(-?[\/\d]+)/i =~ description
    case x = $1
    when /^\/\d+$/
      @ncore = ('1'+x).to_r
    when /^\d+\/\d+$/
      @ncore = x.to_r
    when /^-?\d+$/
      @ncore = x.to_i
    else
      m = "invalid task property: ncore=#{x.inspect}"
      Log.fatal m
      raise RuntimeError,m
    end
  end
  if /\bretry[=:]\s*(\d+)/i =~ description
    @retry = $1.to_i
  end
  if /\bexclusive[=:]\s*(\S+)/i =~ description
    if /^(y|t)/i =~ $1
      @exclusive = true
    end
  end
  @reserve = Rake.application.pwrake_options["RESERVE_NODE"]
  if /\breserve[=:]\s*(\S+)/i =~ description
    case $1
    when /^(y|t|on)/i
      @reserve = true
    when /^(n|f|off)/i
      @reserve = false
    end
  end
  if /\ballow[=:]\s*(\S+)/i =~ description
    @allow = $1
  end
  if /\bdeny[=:]\s*(\S+)/i =~ description
    @deny = $1
  end
  if /\border[=:]\s*(\S+)/i =~ description
    case $1
    when /allow,deny/i
      @order_allow_deny = true
    when /deny,allow/i
      @order_allow_deny = false
    end
  end
  if /\bsteal[=:]\s*(\S+)/i =~ description
    if /^(n|f)/i =~ $1
      @disable_steal = true
    end
  end
end
use_cores(arg) click to toggle source
# File lib/pwrake/task/task_property.rb, line 74
def use_cores(arg)
  case arg
  when HostInfo
    ppn = arg.ncore
  when Integer
    ppn = arg
    if ppn < 1
      raise "invalid ppn: #{ppn}"
    end
  else
    raise "invalid ppn: #{ppn}"
  end

  if @exclusive
    return ppn
  end

  case @ncore
  when nil
    return 1
  when 1-ppn..ppn
    return (@ncore>0) ? @ncore : @ncore+ppn
  end

  m = "ncore=#{@ncore} is out of range of cores per node: #{ppn}"
  Log.fatal m
  raise RuntimeError,m
end