Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 并行计算多个值_Multithreading_Parallel Processing_Julia_Distributed Computing - Fatal编程技术网

Multithreading 并行计算多个值

Multithreading 并行计算多个值,multithreading,parallel-processing,julia,distributed-computing,Multithreading,Parallel Processing,Julia,Distributed Computing,对于扩展的欧几里德算法,我有一个函数,xEuclid,我想用这个函数计算3个值,分别是a=xEuclid(a1,b1),b=xEuclid(a2,b2)和c=xEuclid(a3,b3),每次调用都使用不同的参数,因此,优化过程的想法是同时并行计算a、b和c 我想不出解决这个问题的方法,不幸的是我没有时间学习JuliaAcademy并行编程教程,所以我需要你的帮助来解决这个问题。谢谢大家! 试试下面的方法 using Base.Threads: @spawn a = @spawn xEuclid

对于扩展的欧几里德算法,我有一个函数,
xEuclid
,我想用这个函数计算3个值,分别是
a=xEuclid(a1,b1)
b=xEuclid(a2,b2)
c=xEuclid(a3,b3)
,每次调用都使用不同的参数,因此,优化过程的想法是同时并行计算
a
b
c

我想不出解决这个问题的方法,不幸的是我没有时间学习JuliaAcademy并行编程教程,所以我需要你的帮助来解决这个问题。谢谢大家!

试试下面的方法

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快得多。顺序时间以纳秒为单位,并行时间以微秒为单位。这是因为生成线程的开销。仅在更密集的任务中使用线程是有意义的,否则额外的开销会降低性能。为了获得更快的性能时间,还有另一种并行化方法可以使用吗?将信息发送到另一个进程至少需要1ms。你不能并行化花费太多时间的单个操作。如果算法能够很好地利用SIMD指令,你最好的选择是找到一个利用SIMD指令的实现。请记住:common Julia样式使用所有小写函数名,并尽可能少地使用下划线<例如,代码>扩展欧几里得。