如何创建并推送到共享或分布式数组数组?

2024-04-12

我编写了 Julia 代码,其中初始化一个空数组,如下所示:

a = []

稍后在代码中,我简单地推送到该数组,如下所示:

推![a,b]

其中 b = [c, d, e, ...] 是另一个数组,每个 b 可以具有不同的长度。

这在非并行化代码中工作得很好。但是,我想在并行代码中做同样的事情,其中​​ a = [] 是不同处理器可以推送到的共享或分布式数组。

SharedArray 或 DArray 都不适合我。有什么建议吗?


首先,你应该总是需要声明你在数组中持有什么[] means Any[]这几乎从来都不是一个好主意。

让我们考虑这个带有占位符的向量:

julia> a=[Int[] for _ in 1:8]
8-element Vector{Vector{Int64}}:
 []
 []
 []
 []
 []
 []
 []
 []

This Vector包含 8 条对其他内容的引用Vectors.

现在让我们分发它:

julia> using Distributed; addprocs(4);

julia> @everywhere using DistributedArrays

julia> b = distribute(a)
8-element DArray{Vector{Int64}, 1, Vector{Vector{Int64}}}:
 []
 []
 []
 []
 []
 []
 []
 []

这个新的b现在可通过所有工作进程使用,其中每个工作进程都拥有其localpart它的。让我们变异它吧!

julia> fetch(@spawnat 2 append!(localpart(b)[1], [1,2,3,4]));

julia> fetch(@spawnat 3 append!(localpart(b)[2], [10,20]));

julia> fetch(@spawnat 3 push!(localpart(b)[2], 30))
3-element Vector{Int64}:
 10
 20
 30

我们可以看到一切都按预期工作(我们已经使用fetch以确保我们的代码实际上在远程工作人员上执行)。

让我们知道检查主进程的状态b:

julia> b
8-element DArray{Vector{Int64}, 1, Vector{Vector{Int64}}}:
 [1, 2, 3, 4]
 []
 []
 [10, 20, 30]
 []
 []
 []
 []

可以看到我们已经成功利用远程工作者进行变异b.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建并推送到共享或分布式数组数组? 的相关文章

  • 使用 None 值从 Python int 列表初始化 numpy 掩码数组

    正如问题的答案所示将具有 None 值的 python 列表转换为具有 nan 值的 numpy 数组 https stackoverflow com questions 19456239 convert python list with
  • 二维数组中的寻路

    假设我有这个二维数组地图 0 0 0 0 7 1 1 1 1 1 1 1 1 0 7 7 7 7 1 1 1 24 1 1 1 1 0 7 24 24 24 24 24 24 24 1 1 3 1 0 7 23 23 23 23 23 23
  • 将键值对添加到数组中的所有对象

    我想向数组中的所有对象添加一个键 值参数 eg var arrOfObj name eve name john name jane 现在我想向所有对象添加一个新参数 isActive 以便生成的数组如下所示 eg name eve isAc
  • 循环遍历多维数组

    我有一个与此类似的 JSON 文件 Pages Name Home Page index php admin Name Admin Page admin index php Template admin MobileTemplate adm
  • 在C中更改函数内的数组

    我正在学习 C 并且很困惑为什么在 main 中创建的数组不会在函数内部更改 我假设传递的数组是一个指针 并且更改指针应该更改数组 对吧 有人可以解释这种情况下发生了什么吗 谢谢你的帮助 int main int i length 10 i
  • 使用文件处理程序时 numpy savetxt 失败

    在Windows 7上 使用最新的numpy 1 13 3和PYTHON 3 5 如果我有一个名为points的数组 其形状为m x 6 dtype为float32 我可以将数组保存到 foo txt 文件中 如下所示 np savetxt
  • 在什么情况下C++会在编译时进行数组边界检查?

    受到 使用编译时 HTML 解析的 C HTML 模板引擎 https github com rep movsd see phit 我正在尝试编写一个示例类来检查字符串中的第一个字符是否是a int dummy 0 class Test p
  • 按一定条件查找数组内元素的最后一个索引

    假设我有一个对象数组 a something b 12 a something b 12 a somethingElse b 12 a something b 12 a somethingElse b 12 获取元素的最后一个索引的最干净的
  • 在Java中将浮点数组写入文件

    我正在读取 NetCDF 文件 我想将每个数组作为浮点数组读取 然后将浮点数组写入新文件 如果我读取浮点数组 然后迭代数组中的每个元素 使用 DataOutputStream 我可以使其工作 但这非常非常慢 我的 NetCDF 文件超过 1
  • 当 $.each 和 array.splice(i) 放在一起时,JQuery 处理数组超出索引错误

    最近我在互联网上搜索一些可以处理废弃的 ajax xhr 调用的代码 这就是我发现的 https stackoverflow com a 8841412 395910 xhrPool ajaxSetup beforeSend functio
  • 如何“缩放”numpy 数组?

    我想将形状 h w 的数组缩放 n 倍 从而得到形状 h n w n 的数组 其中 假设我有一个 2x2 数组 array 1 1 0 1 我想将数组缩放为 4x4 array 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1
  • List.Clear() 在 C# 中是如何实现的?

    我假设它使用数组来实现 List 怎么List Clear 实施的 它实际上清理了数组还是只是为此列表创建了一个新数组 public class List private Array array public void Clear1 arr
  • 为什么 int 数组的最大大小小于 Int32.MaxValue? [复制]

    这个问题在这里已经有答案了 虽然这篇文章说它应该有效 https stackoverflow com questions 2338778 what is the maximum length of an array in net on 64
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长
  • 在 Haskell 中增长数组

    我想在 Haskell 中实现以下 命令式 算法 给定一个序列对 e0 s0 e1 s1 e2 s2 en sn 其中 e 和 s 部分不一定是自然数不同的是 在每个时间步都会随机选择该序列的一个元素 例如 ei si 并根据 ei si
  • 有效,但未捕获引用错误:当我在控制台中键入数组时未定义数组

    我用 js 制作了一个 Tic Tac Toe 游戏 我有几个数组 一个用于 html td 元素 网格 用于查看它们之前是否被点击过 boolGrid 还有一个用颜色检查结束条件 colorgrid 我使用 var 关键字及其内容在全局范
  • C 中的菱形数组排序

    我有以下 C 语言作业 我基本上需要一种方法而不是解决方案 我们有一个 13 x 13 的数组 在数组中 我们有一个需要考虑的菱形形状 该菱形之外的所有内容都初始化为 1 不重要 下面的 5 x 5 数组示例 x x 1 x x x 2 2
  • 字符串到数组,按第三个字/列排序

    我有一个包含数字 单词和换行符的字符串 我将其拆分为一个数组 如果我跑Array Sort lines 它将按第 1 列对数组进行数字排序 Number 我怎样才能按第 3 列的字母顺序对数组进行排序 Color 注意 它们不是真正的列 只
  • 如何从 Ruby 2.0 中的字符串数组获取值

    我有这个字符串数组 array nike air nike steam nike softy nike strength smooth sleeper adidas air addidas jogar adidas softy adidas
  • std::make_pair 与浮点数组(float2,无符号整数)

    我有一个用 float2 unsigned int 对模板化的向量 例如 std vector

随机推荐