我有一份Julia代码,想通过同时运行大量作业(即约10,000个作业)将此代码提交到远程计算集群。该代码的工作方式是,主函数(称之为“main.jl”)调用另一个函数(称之为“generator.jl”),该函数利用随机数,如rand(Float64)等。我通过一个bash文件提交main.jl,并通过包含
#PBS -t 1-N
我希望每次提交N个作业时,都有一个不同的随机数生成器,但我不确定应该如何做。我考虑根据环境变量设置一个随机种子来实现;例如,通过设置
@everywhere import Random.Random
@everywhere using Random.Random
Random.seed!(ENV_VAR)
在 main.jl 中,我不确定如何获取环境变量 ENV_VAR。在 MATLAB 中,我知道可以通过以下方式获取:
NUM = getenv( 'PBS_ARRAYID' )
但我不知道如何在Julia中实现这一点。如果我在main.jl中设定这个新的随机种子,那么每次bash脚本提交main.jl到集群时,是否会生成不同的随机种子?类似地,考虑到Julia RNG使用MersenneTwister,我是否需要在Julia中这样做?
需要注意的是,我一直在远程机器上使用Julia 1.5.1。