同时计算多个值

3

我有一个函数xEuclid,用于执行扩展欧几里得算法,并且我想使用该函数计算3个值,分别是a = xEuclid(a1,b1)b = xEuclid(a2,b2)c = xEuclid(a3,b3),每次调用使用不同的参数。为了优化过程,我们想同时并行计算abc

我无法想出解决方法,但很不幸我没有时间完成JuliaAcademy并行编程教程,所以我需要您的帮助来解决它。谢谢!


只是为了记录:通常的Julia风格对于函数使用全小写名称,并尽可能少使用下划线。例如,extendedeuclidean - phipsgabler
1个回答

3

请尝试以下方法

using Base.Threads: @spawn
a = @spawn xEuclid(a1,b1)
b = @spawn xEuclid(a2,b2)
c = @spawn xEuclid(a3,b3)
a = fetch(a); b = fetch(b); c = fetch(c)

这需要至少julia v1.3版本。


谢谢!代码可以运行,但是顺序求和仍然比使用 spawn 更快。顺序时间在纳秒级别,而并行时间在微秒级别。 - valware_xyz
这是因为生成线程的开销。只有在更加密集的任务中使用线程才有意义,否则额外的开销会降低性能。 - giordano
有没有其他并行化方法可用以获得更快的性能时间? - valware_xyz
将信息发送到另一个进程至少需要1毫秒。您不能并行执行单个操作,这些操作需要太长时间。 - Oscar Smith
你最好找一个能够利用SIMD指令的实现方式,如果算法适合这种方式的话。 - Fredrik Bagge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接