lijiang2014 / thht

Tian He Throughput Computing
0 stars 0 forks source link

设置类似于HTCondor 的 输入文件,类似 dock.sub 。 #2

Closed lijiang2014 closed 7 years ago

lijiang2014 commented 7 years ago

参考文档: http://research.cs.wisc.edu/htcondor/manual/v8.4/2_5Submitting_Job.html

condor_submit [-verbose] [-unused] [-name schedd_name] [-remote schedd_name] [-addr $<$ip:port$>$] [-pool pool_name] [-disable] [-password passphrase] [-debug] [-append command ... ] [-spool] [-dump filename] [-interactive] [-dry-run] [-maxjobs <number-of-jobs>] [-single-cluster] [<submit-variable>=<value>] [submit description file] [-queue queue_arguments] condor_submit 可以设置的参数非常多, httc 建议不这么复杂 。 还是用 .htc 文件来指定吧 : [JobName] [WorkDIr] [] [Args] > [outFile] 2>[errFile] 可以提供一些工具来根据各种情况来生成 .htc 文件。 其实使用 find , awk 等工具即可完成。

则, 目前的主要提交器其实主要是需要指定两个必须的变量 : executable 和 input , 其他的变量都应该有默认值(input 也可以有默认值 ) 。

目前的提交方式大概为 : py34env-rh6.5) [nscc-gz_jiangli@ln2%tianhe2-C test]$ cat test.sh src_path=/HOME/nscc-gz_jiangli/virtualenv/ht_celery export PATH=$src_path:$PATH yhbatch -N 2 $src_path/main.sh (py34env-rh6.5) [nscc-gz_jiangli@ln2%tianhe2-C test]$ 即是使用了默认的 input.htc , 但是 EXEC 是从 settings.py 里面读的,这样不怎么好,需要改为从环境变量中读取。

lijiang2014 commented 7 years ago

~- [ ] read the settings.htc file and write settings to redis DB . 这样其他组件可以从 redis 中读取 设置信息。~

~settings.htc file -> settings -> redis ["httc-settings"] -> settings~

可能还是用 json 对象来存放比较好

lijiang2014 commented 7 years ago

目前设置简单的 settings file .

(py34env-rh6.5) [nscc-gz_jiangli@ln2%tianhe2-C test]$ cat test.sh 
src_path=/HOME/nscc-gz_jiangli/virtualenv/ht_celery
export PATH=$src_path:$PATH
export THHT_EXEC="/HOME/nscc-gz_jiangli/virtualenv/ht_celery/simtask.py"
export THHT_INPUT="input.htc"
yhbatch -N 2 $src_path/main.sh settings.htc

THHT_EXEC 和 THHT_INPUT 这两个环境变量最好指定一下 。 或者通过配置文件 : settings.htc 。 settings.htc 中 可以配置的内容可参考 config.py :

            if sname.lower() in [  "exec" ] :
                settings["job"]["exec"] = svalue
            elif sname in [   "input" ,  "inp" ] :
                settings["job"]["input"] = svalue
            elif sname in [   "name" ,  "autoname" ] :
                if svalue.lower() in [ "true" , "yes" , "1"  ] :
                    settings["job"]["autoname"] = True
                elif svalue.lower() in [ "false" , "no" , "0"  ] :
                    settings["job"]["autoname"] = False
            elif sname in [   "dir" ,  "workdir" , "autoworkdir" ] :
                if svalue.lower() in [ "true" , "yes" , "1"  ] :
                    settings["job"]["autoworkdir"] = True
                elif svalue.lower() in [ "false" , "no" , "0"  ] :
                    settings["job"]["autoworkdir"] = False
            elif sname in settings["queue"].keys() : 
                settings["queue"][ sname ] = svalue 
            else :
                print( " WARING : NO SUCH SETTING : " , eachLine )

其中最主要的还是 : EXEC 和 INPUT

lijiang2014 commented 7 years ago

目前设置简单的 settings file .

(py34env-rh6.5) [nscc-gz_jiangli@ln2%tianhe2-C test]$ cat test.sh 
src_path=/HOME/nscc-gz_jiangli/virtualenv/ht_celery
export PATH=$src_path:$PATH
export THHT_EXEC="/HOME/nscc-gz_jiangli/virtualenv/ht_celery/simtask.py"
export THHT_INPUT="input.htc"
yhbatch -N 2 $src_path/main.sh settings.htc

THHT_EXEC 和 THHT_INPUT 这两个环境变量最好指定一下 。 或者通过配置文件 : settings.htc 。 settings.htc 中 可以配置的内容可参考 config.py :

            if sname.lower() in [  "exec" ] :
                settings["job"]["exec"] = svalue
            elif sname in [   "input" ,  "inp" ] :
                settings["job"]["input"] = svalue
            elif sname in [   "name" ,  "autoname" ] :
                if svalue.lower() in [ "true" , "yes" , "1"  ] :
                    settings["job"]["autoname"] = True
                elif svalue.lower() in [ "false" , "no" , "0"  ] :
                    settings["job"]["autoname"] = False
            elif sname in [   "dir" ,  "workdir" , "autoworkdir" ] :
                if svalue.lower() in [ "true" , "yes" , "1"  ] :
                    settings["job"]["autoworkdir"] = True
                elif svalue.lower() in [ "false" , "no" , "0"  ] :
                    settings["job"]["autoworkdir"] = False
            elif sname in settings["queue"].keys() : 
                settings["queue"][ sname ] = svalue 
            else :
                print( " WARING : NO SUCH SETTING : " , eachLine )

其中最主要的还是 : EXEC 和 INPUT

lijiang2014 commented 7 years ago

又做了些修改,修复了一些问题,一个范例如 :

(py34env-rh6.5) [nscc-gz_jiangli@ln2%tianhe2-C test]$ cat settings.htc 
EXEC = /HOME/nscc-gz_jiangli/virtualenv/ht_celery/simtask.py
INPUT =  input2.htc
queue.max_retries = 1
queue.default_retry_delay = 0

可参考 config.py