병렬화를 설정하기 위해 두 개의 쉘 스크립트를 사용합니다. 첫 번째 스크립트는 for 루프를 사용하여 환경 변수를 두 번째 스크립트에 전달합니다. 두 번째 스크립트는 병렬을 호출하고 julia 스크립트를 실행하여 변수를 다시 전달합니다.
첫 번째 ( test-loop.sh
) 스크립트는 다음과 같습니다.
for i in `seq 1 99`;
do
export my_var=$i
bash ~/PATH/TO/FILE/test-par.sh
done
그러면 다음 파일( test-par.sh
)은 다음과 같습니다.
#!/bin/bash
parallel julia ~/PATH/TO/FILE/bash-test.jl ::: {$my_var..100..1}
예를 들어 Julia를 병렬로 실행하기 위한 위 호출은 1로 바꾸면 제대로 작동 $my_var
하지만 변수를 추가하면 다음 오류가 발생합니다.
ERROR: LoadError: ArgumentError: invalid base 10 digit '{' in "{99..100..1}"
Stacktrace:
[1] tryparse_internal(#unused#::Type{Int64}, s::String, startpos::Int64, endpos::Int64, base_::Int64, raise::Bool)
@ Base ./parse.jl:137
[2] parse(::Type{Int64}, s::String; base::Nothing)
@ Base ./parse.jl:241
[3] parse(::Type{Int64}, s::String)
@ Base ./parse.jl:241
[4] top-level scope
이 문제를 해결하기 위해 병렬 호출을 다시 포맷하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다!
답변1
간단한 대답은 eval
다음과 같이 추가하는 것입니다.
eval "parallel julia ~/PATH/TO/FILE/bash-test.jl ::: {$my_var..100..1}"