小编Uth*_*tra的帖子

Julia:并行循环遍历分区迭代器

所以我想遍历的东西分区的列表中,说1:n了一些n13和21,我非常想运行的代码看起来像这样之间:

valid_num = @parallel (+) for p in partitions(1:n)
  int(is_valid(p))
end

println(valid_num)
Run Code Online (Sandbox Code Playgroud)

这将使用@parallel formap来减少我的问题.例如,将其与Julia文档中的示例进行比较:

nheads = @parallel (+) for i=1:200000000
  Int(rand(Bool))
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试修改循环,我会收到以下错误:

ERROR: `getindex` has no method matching getindex(::SetPartitions{UnitRange{Int64}}, ::Int64)
 in anonymous at no file:1433
 in anonymous at multi.jl:1279
 in run_work_thunk at multi.jl:621
 in run_work_thunk at multi.jl:630
 in anonymous at task.jl:6
Run Code Online (Sandbox Code Playgroud)

我想这是因为我想遍历的东西,是不是形式1:n(编辑:我想这是因为你不能说p[3]如果p=partitions(1:n)).

我已经尝试过pmap用来解决这个问题,但是因为分区的数量可以变得非常大,非常快(有超过250万个分区1:13,当我得到的1:21东西将是巨大的)时,构建这么大的数组变成了问题.我让它跑了一夜,但仍然没有完成.

有没有人对如何在朱莉娅有效地做到这一点有任何建议?我可以访问~30核心计算机,我的任务似乎很容易并行化,所以如果有人知道在Julia中做到这一点的好方法,我将非常感激.

非常感谢!

parallel-processing julia

5
推荐指数
1
解决办法
483
查看次数

标签 统计

julia ×1

parallel-processing ×1