Julia分布函数:指定分布维度

Julia分布函数:指定分布维度,julia,distributed,Julia,Distributed,我感兴趣的是在p个worker之间分布一个MxN整数数组。有没有办法指定分发哪个维度?特别是,我希望保持行数M固定,并分布在N列上。在我的例子中,M>N(我有一个术语文档矩阵,词汇表大小为M,文档数量为N) 默认情况下,Julia似乎分布在大小最大的维度上,这不适用于我的应用程序(我希望分布在文档上,而不是词汇表上)。有没有办法控制哪个维度被分发?SharedArray构造函数有一个pids可选参数,用于将元素映射到进程(请参阅) 因此,可以使用以下代码初始化MxN矩阵: # a helper

我感兴趣的是在p个worker之间分布一个MxN整数数组。有没有办法指定分发哪个维度?特别是,我希望保持行数M固定,并分布在N列上。在我的例子中,M>N(我有一个术语文档矩阵,词汇表大小为M,文档数量为N)


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

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

因此,可以使用以下代码初始化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
创建中,只需稍加更改(使用
outer
切换
internal
,使用
M
切换
N
),即可创建一个行分布式数组