Установить переменные среды во всех процессах в Юлии - PullRequest
1 голос
/ 16 мая 2019

В настоящее время я работаю с Юлией (1.0), чтобы запустить некоторый параллельный код на кластерах HPC.HPC управляется с помощью PBS.Я пытаюсь найти способ широковещательной передачи переменных среды для всех процессов, то есть способ автоматической широковещательной передачи определенного списка переменных среды, чтобы иметь доступ к ним для каждого работника julia.

#!/bin/bash
#PBS ...

export TOTO=toto
julia --machine-file=$PBS_NODEFILE my_script.jl

ВВ этом примере я не смогу получить доступ к переменной TOTO в каждом работнике julia (через ENV ["TOTO"]).

Единственный способ найти то, что я хочу, - это установить переменные вмой .bashrc, но я хочу, чтобы это было в зависимости от сценария.Другой способ - поместить в мой файл startup.jl:

@everywhere ENV["TOTO"] = $(ENV["TOTO"])

Но это не зависит от сценария, потому что я должен заранее знать, какие переменные я хочу отправить.Если я сделаю цикл по ключам ENV, я передам все переменные, а затем переопределю переменные, которые мне не нужны.

Я пытался использовать DotEnv.jl, но он не работает.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 16 мая 2019

Очевидный способ - сначала установить переменные в script.jl. Вы также можете поместить инициализацию в отдельный файл, например, environment.jl и загрузите его во все процессы с флагом -L:

julia --machine-file=$PBS_NODEFILE -L environment.jl my_script.jl

, где environment.jl в этом случае будет содержать

ENV["TOTO"] = "toto"

и т.д.

...