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