【问题标题】:Julia distribute function: specifying distributed dimensionJulia 分布函数:指定分布维度
【发布时间】:2017-05-08 22:11:56
【问题描述】:

我有兴趣在 p 个工作人员之间分配一个 MxN 整数数组。有没有办法指定分配哪个维度?特别是,我想保持 M 行数固定并分布在 N 列上。在我的情况下 M > N (我有一个词汇量为 M 且文档数为 N 的术语文档矩阵)。

默认情况下,Julia 似乎分布在具有最大尺寸的维度上,这不适用于我的应用程序(我想分布在文档而不是词汇表上)。有没有办法控制分配哪个维度?

【问题讨论】:

    标签: julia distributed


    【解决方案1】:

    SharedArray 构造函数有一个pids 可选参数,用于将元素映射到进程(参见documentation)。

    因此,可以使用以下代码初始化 MxN 矩阵:

    # a helper function which might be useful in other contexts
    function balancedfill(v,n,b)
        d,r = divrem(n,b)
        return v[[repeat(1:r,inner=d+1);repeat(r+1:b,inner=d)]]
    end
    
    # N,M = size(mat)
    pidvec = repeat(balancedfill(1:nprocs(),N,nprocs()),inner=M)
    
    sharedmat = SharedArray{Float64}((N,M); pids=pidvec)
    

    这将创建一个 Float64 共享数组,其中列在进程之间保持平衡。 Float64 可以替换为所需的元素类型。稍作改动(在pidvec 创建中将innerouterNM 切换)即可创建按行分布的分布式数组。

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多