我有一个函数,比如foo(),它返回一个int值,我必须将不同的值传递给这个函数,以求得到两个不同的值,这些值必须进行求和,例如。
result = foo(2) + foo(37)我想让这些foo(2)和foo(37)并行计算(同时)。有两个版本的foo可能会有所帮助,一个版本使用for循环,另一个版本使用递归。我对朱莉娅和并行编程非常陌生,但我想让这个问题继续下去,直到我可以用Genie.jl作为一个web应用程序来构建它。此外,除了它的文档之外,任何可以学习与Julia并行编程的资源都将受到高度赞赏!
发布于 2019-11-04 06:07:12
如果要使用进程进行并行化,可以使用"distributed“循环:
8.2.3.汇总结果
第二种情况是,您希望对每个项执行一个小操作,但也希望在结束时执行“聚合函数”来检索标量值(如果输入是矩阵,则执行数组)。在这些情况下,您可以使用@distributed (aggregationFunction)进行构造。
例如,您将并行运行一个除法为2,然后使用sum作为聚合函数(假设有三个工作过程可用):
function f(n)
s = 0.0
for i = 1:n
s += i/2
end
return s
end
function pf(n)
s = @distributed (+) for i = 1:n # aggregate using sum on variable s
i/2
# last element of for cycle is used by the aggregator
end
return s
end
@benchmark f(10000000) # median time: 11.478 ms
@benchmark pf(10000000) # median time: 4.458 ms(来自Julia快速语法引用)
或者,您可以使用线程。朱莉娅已经有了多线程,但是Julia1.3(几天/几个星期内,在编写rc4时到期)将引入一个全面的线程API。
https://stackoverflow.com/questions/58685668
复制相似问题