class SlurmManager
Public Class Methods
available?(options)
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 50 def self.available?(options) available = true shell_output = system_call("type 'sbatch'", nil, options[:remote], options[:ssh]) available = false if shell_output.empty? return available end
priority()
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 57 def self.priority return 100 end
Public Instance Methods
get_queue_system_id(shell_output)
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 42 def get_queue_system_id(shell_output) queue_id = nil shell_output.chomp! fields = shell_output.split(' ') queue_id = fields[3] return queue_id end
parse_additional_options(string, attribs)
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 3 def parse_additional_options(string, attribs) expresions = %w[%C %T %M %N ] values = [attribs[:cpu], attribs[:time], attribs[:mem], attribs[:node]] new_string = string.dup expresions.each_with_index do |exp, i| new_string.gsub!(exp, "#{values[i]}") end return new_string end
submit_job(job, ar_dependencies)
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 32 def submit_job(job, ar_dependencies) final_dep = get_all_deps(ar_dependencies) dependencies = nil dependencies='--dependency=afterok:'+final_dep.join(':') if !final_dep.empty? cmd = "sbatch #{dependencies} #{job.name}.sh" STDOUT.puts cmd if @show_submit queue_id = get_queue_system_id(system_call(cmd, job.attrib[:exec_folder])) return queue_id end
write_header(id, job, sh_name)
click to toggle source
# File lib/autoflow/queue_managers/slurm_manager.rb, line 13 def write_header(id, job, sh_name) if !job.attrib[:ntask] write_file(sh_name, "#SBATCH --cpus=#{job.attrib[:cpu]}") else write_file(sh_name, "#SBATCH --ntasks=#{job.attrib[:cpu]}") write_file(sh_name, "#SBATCH --nodes=#{job.attrib[:multinode]}") if job.attrib[:multinode] > 0 end write_file(sh_name, "#SBATCH --mem=#{job.attrib[:mem]}") write_file(sh_name, "#SBATCH --time=#{job.attrib[:time]}") write_file(sh_name, "#SBATCH --constraint=#{job.attrib[:node]}") if !job.attrib[:node].nil? write_file(sh_name, '#SBATCH --error=job.%J.err') write_file(sh_name, '#SBATCH --output=job.%J.out') write_file(sh_name, "#SBATCH --#{job.attrib[:additional_job_options][0]}=#{parse_additional_options(job.attrib[:additional_job_options][1], job.attrib)}") if !job.attrib[:additional_job_options].nil? if job.attrib[:ntask] write_file(sh_name, 'srun hostname -s > workers') if job.attrib[:cpu_asign] == 'list' end end