sto*_*rds 8 parallel-processing multithreading julia
我正在尝试使用Julia并行实现代码.我正在使用@everywhere宏来使所有进程从RemoteRef获取数据.
是否可以使用仅在@everywhere表达式中的第一个进程上定义的变量名称,并以某种方式指定我希望它将该变量的值而不是变量名称发送到所有进程?
例:
r = RemoteRef()
put(r, data)
@everywhere data = fetch(r)
Run Code Online (Sandbox Code Playgroud)
这会返回错误,因为r未在所有进程上定义.
我应该如何将数据移动到所有进程?
另外,我可以告诉Julia在表达式中放置值而不是变量名吗?类似于如何name = "John"; println("Hello, $name")打印的东西"Hello, John"
要查找 Spencer 在一个漂亮的小包中指出的函数(和宏),请查看ParallelDataTransfer.jl。这些测试是很好的使用示例(CI 显示这些测试在所有平台上的 v0.5 上通过)。
对于您的问题,您可以使用以下sendto功能:
z = randn(10, 10); sendto(workers(), z=z)
@everywhere println(z)
Run Code Online (Sandbox Code Playgroud)