gpt4 book ai didi

for-loop - Julia 中异步多个计算的并行代码

转载 作者:行者123 更新时间:2023-12-02 21:46:19 25 4
gpt4 key购买 nike

我知道过去可能有人问过这个问题,但我绝对是 Julia 的初学者。

我在 Julia 中有一个简单的代码,我想并行运行。

#--Two Calculations during the Loop--

vt_0=0
ct_0=0

for i=1:10

#--Calculation vt_1
vt_1=max(rand(1:i),vt_0,ct_0)


#--Calculation ct_1
ct_1=min(rand(1:i),vt_0,ct_0)

ct_0=ct_1
vt_0=vt_1

end

因此,如您所见,vt_1ct_1 的计算可以同时完成(或者在同一个循环期间完成,而无需 ct_1 计算正在等待 vt_1 计算)。

有人可以帮我修改这段代码以并行运行吗?我应该下载任何 Julia 脚本/库吗? (我有一个更大、更复杂的动态编程代码,但本质是相同的。)

提前谢谢

最佳答案

这是您要找的吗?不使用像我这里那样的匿名函数可能会更快,但除此之外。

addprocs(2)        
vt_0 = 0; ct_0 = 0;
for i=1:10
#--Calculation vt_1
vt_1 = remotecall((x,y)->max(rand(1:i),x,y), 2, vt_0, ct_0)

#--Calculation ct_1
ct_1 = remotecall((x,y)->min(rand(1:i),x,y), 3, vt_0, ct_0)

ct_0 = fetch(ct_1)
vt_0 = fetch(vt_1)
end

或者没有匿名函数:

addprocs(2)
@everywhere minrand(i,x,y) = min(rand(1:i),x,y)
@everywhere maxrand(i,x,y) = max(rand(1:i),x,y)
vt_0 = 0; ct_0 = 0;

for i=1:10
#--Calculation vt_1
vt_1 = remotecall(maxrand, 2, i, vt_0, ct_0)

#--Calculation ct_1
ct_1 = remotecall(minrand, 3, i, vt_0, ct_0)

ct_0 = fetch(ct_1)
vt_0 = fetch(vt_1)
end

关于for-loop - Julia 中异步多个计算的并行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46723185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com