Как получить номер задания кондора в python и в выходной скрипт? - PullRequest
1 голос
/ 03 мая 2020

Я хочу две вещи:

  1. номер задания из python
  2. , вставленный в выходной файл.

мой скрипт отправки выглядит примерно так:

####################
#
# Simple HTCondor submit description file
#
####################

Executable = test_condor.py
Log          = condor_job_log.out
Output       = condor_job_stdout.out
Error        = condor_job_stdout.out
# Use this to make sure 1 gpu is available. The key words are case insensitive. 
REquest_gpus = 1
# Note: to use multiple CPUs instead of the default (one CPU), use request_cpus as well
Request_cpus = 4
# E-mail option
Notify_user = me@gmail.com

# "Queue" means add the setup until this line to the queue (needs to be at the end of script).
Queue

, и я хочу, чтобы к выходным файлам добавлялся номер задания, например:

Log          = condor_job_log{$JOB_ID}.out

Я попытался найти имя среды, напечатав все переменные среды в python, но это было бесполезно:

 os.environ = environ({'_CONDOR_ANCESTOR_2148': '3092:1586844319:3811816668', '_CONDOR_ANCESTOR_18122': '18123:1588528659:3276981140', '_CONDOR_ANCESTOR_3092': '18122:1588528659:978447114', 'TEMP': '/srv/condor/execute/dir_18122', '_CONDOR_SCRATCH_DIR': '/srv/condor/execute/dir_18122', '_CONDOR_SLOT': 'slot1_4', 'BATCH_SYSTEM': 'HTCondor', 'TMPDIR': '/srv/condor/execute/dir_18122', '_CONDOR_CHIRP_CONFIG': '/srv/condor/execute/dir_18122/.chirp.config', '_CONDOR_JOB_PIDS': '', 'TMP': '/srv/condor/execute/dir_18122', 'OMP_NUM_THREADS': '4', '_CONDOR_AssignedGPUs': 'CUDA1', '_CONDOR_JOB_AD': '/srv/condor/execute/dir_18122/.job.ad', 'CUDA_VISIBLE_DEVICES': '1', '_CONDOR_JOB_IWD': '/home/me/repo/repo-proj/code', '_CHIRP_DELAYED_UPDATE_PREFIX': 'Chirp', 'GPU_DEVICE_ORDINAL': '1', '_CONDOR_MACHINE_AD': '/srv/condor/execute/dir_18122/.machine.ad'})

, поскольку номер задания должен был выглядеть примерно так:

Submitting job(s).
1 job(s) submitted to cluster 11011.

, и я попытался найти этот номер, но безуспешно. Так что я не могу получить его от python ... так как мне его получить?


Это не помогло: https://www-auth.cs.wisc.edu/lists/htcondor-users/2005-February/msg00202.shtml

потому что я не знаю, какая `стандартная переменная env отсутствует, но есть другой способ с предопределенными макросами

включить его в среду с (например) environment = CONDOR_ID = $ (Cluster). $ (Process ) значит Я делаю это в моем сценарии представления? Но мой сценарий представления - python сценарий ... Я в замешательстве. Я попытался увидеть все имена переменных среды, но ничего не соответствовало тому, что я ожидал.

1 Ответ

1 голос
/ 04 мая 2020

Если вам нужен идентификатор задания в имени выходного файла, попробуйте что-то вроде

output = my_job_$(CLUSTER).out

Обратите внимание, что идентификатор задания кондора состоит из двух частей: «кластера» и "pro c". Значение pro c всегда равно 0, если вы просто заканчиваете файл отправки инструкцией

queue

. Если вы отправите несколько проксов на кластер с

queue 100

, тогда процы будут go от 0 до 99.

, в этом случае вы можете поставить кластер и про c в имя файла, например

output = my_job_$(CLUSTER).$(PROCESS).out

Получить идентификатор кластера в среду не так уж сложно, допустим, вы хотите его в переменной среды MY_JOB_ID. Затем вы можете добавить в файл отправки (до оператора очереди)

environment = MY_JOB_ID = $(CLUSTER)

, тогда ваш python скрипт увидит идентификатор кластера в переменной среды с именем MY_JOB_ID

...