并行模拟在同一文件上写入

时间:2015-01-12 19:51:29

标签: file parallel-processing julia

我的目标是在群集上并行运行10,000个左右的Julia编码模拟(每个模拟独立于所有其他模拟)。每个模拟都有一个数字输出(以及有关哪个模拟产生此数字的3列信息)。因此,强制每个模拟在单独的文件上打印对我来说听起来有点愚蠢。

我可以安全地要求所有这些模拟在相同的文件上写入,或者如果两次模拟恰好在同一时间写入文件,这可能会导致错误吗?什么是最好的解决方案?

1 个答案:

答案 0 :(得分:4)

以下是使用pmap()设置一组10000个独立模拟以在Julia中并行运行的一种方式的简短示例:

@everywhere function simulate(i)
    # we compute the simulation results here. In this case we just return
    # the simulation number and a random value
    x = rand()
    return (i,x)
end

x = pmap(simulate,1:10000)
# x is the array of tuples returned from all the simulations

showall(x)
# ... or we could write x to a file or do something else with it

@everywhere需要确保simulate()函数可用于所有进程,而不仅仅是一个进程。 pmap()为第二个参数中的每个值并行调用simulate()一次,并返回由simulate()生成的所有结果的数组。