Method: OodCore::Job::Adapters::Slurm#submit
- Defined in:
- lib/ood_core/job/adapters/slurm.rb
#submit(script, after: [], afterok: [], afternotok: [], afterany: []) ⇒ String
Submit a job with the attributes defined in the job template instance
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 |
# File 'lib/ood_core/job/adapters/slurm.rb', line 620 def submit(script, after: [], afterok: [], afternotok: [], afterany: []) after = Array(after).map(&:to_s) afterok = Array(afterok).map(&:to_s) afternotok = Array(afternotok).map(&:to_s) afterany = Array(afterany).map(&:to_s) # Set sbatch options args = [] # ignore args, don't know how to do this for slurm args.concat ["-H"] if script.submit_as_hold args.concat (script.rerunnable ? ["--requeue"] : ["--no-requeue"]) unless script.rerunnable.nil? args.concat ["-D", script.workdir.to_s] unless script.workdir.nil? args.concat ["--mail-user", script.email.join(",")] unless script.email.nil? if script.email_on_started && script.email_on_terminated args.concat ["--mail-type", "ALL"] elsif script.email_on_started args.concat ["--mail-type", "BEGIN"] elsif script.email_on_terminated args.concat ["--mail-type", "END"] elsif script.email_on_started == false && script.email_on_terminated == false args.concat ["--mail-type", "NONE"] end args.concat ["-J", script.job_name] unless script.job_name.nil? args.concat ["-i", script.input_path] unless script.input_path.nil? args.concat ["-o", script.output_path] unless script.output_path.nil? args.concat ["-e", script.error_path] unless script.error_path.nil? args.concat ["--reservation", script.reservation_id] unless script.reservation_id.nil? args.concat ["-p", script.queue_name] unless script.queue_name.nil? args.concat ["--priority", script.priority] unless script.priority.nil? args.concat ["--begin", script.start_time.localtime.strftime("%C%y-%m-%dT%H:%M:%S")] unless script.start_time.nil? args.concat ["-A", script.accounting_id] unless script.accounting_id.nil? args.concat ["-t", seconds_to_duration(script.wall_time)] unless script.wall_time.nil? args.concat ['-a', script.job_array_request] unless script.job_array_request.nil? args.concat ['--qos', script.qos] unless script.qos.nil? args.concat ['--gpus-per-node', script.gpus_per_node] unless script.gpus_per_node.nil? args.concat ['-n', script.cores] unless script.cores.nil? # ignore nodes, don't know how to do this for slurm # Set dependencies depend = [] depend << "after:#{after.join(":")}" unless after.empty? depend << "afterok:#{afterok.join(":")}" unless afterok.empty? depend << "afternotok:#{afternotok.join(":")}" unless afternotok.empty? depend << "afterany:#{afterany.join(":")}" unless afterany.empty? args.concat ["-d", depend.join(",")] unless depend.empty? # Set environment variables env = script.job_environment || {} args.concat ["--export", export_arg(env, script.copy_environment?)] # Set native options args.concat script.native if script.native # Set content content = if script.shell_path.nil? script.content else "#!#{script.shell_path}\n#{script.content}" end # Submit job @slurm.submit_string(content, args: args, env: env) rescue Batch::Error => e raise JobAdapterError, e. end |