loops - 对于高维数组,Julia 中的数组访问循环很慢

标签 loops multidimensional-array julia tensor

我在 this thread 中描述并解决了同样的问题,其中 julia 循环由于使用非最佳变量类型重复访问内存而显着减慢。然而,在我的例子中,我将张量(维度大于二)存储为多维数组,需要在 for 循环中一遍又一遍地求和,例如:

function randomTensor(M,N)
    T = fill( zeros( M, M, M, M) , N)
    for i in 1 : N
        Ti = rand( M, M, M, M)
        T[i] += Ti
    end
    return T
end

我是 Julia 的新手(事实上,我只是将它用于我需要一些 julia 模块的特定项目),所以我对变量类型等只有一般的了解,直到现在我'如果不是一般数组,我无法定义我的张量。我想要一个在上述链接中提出的解决方案,他们使用 Matrix{Float64}[] 来定义变量,但显然这仅适用于一维或二维数组。也不能使用元组,因为我需要对这些值求和。不同实现的任何提示?

提前谢谢大家。

编辑:我发布的示例代码只是一个与我的代码结构相同的示例,我对生成和求和随机数不感兴趣:) 换句话说,我的问题是:是否有比 Array{Float, N} 更好的变量类型来执行操作(例如张量乘以标量...)或对内存有“更好的访问”?

最佳答案

目前还不清楚问题是什么。你的功能等同于:

randomTensor(M,N) = [rand(M, M, M, M) for i in 1:N]

你是说这太慢了吗?大部分时间应该用于创建随机数和为输出分配内存。

关于loops - 对于高维数组,Julia 中的数组访问循环很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64911569/

相关文章:

python - 我们可以在列表推导式中使用嵌套 for 循环的幕后原因是什么

c++ - 有没有更好的方法在循环时显示不同的文本并询问相同的变量而不添加 X while 循环?

python - 从多维 Numpy 数组行中选择随机窗口

arrays - 寻找所有最大的序列

matrix - 如何在只有一个值集的稀疏矩阵中查找列

algorithm - 带循环的拓扑排序

matlab - Matlab中if语句中的值的误差幅度?

Java List of List of List,更好的解决方案?

julia - 在 Pluto 中交互式使用 Gadfly

multithreading - Julia `remotecall`线程给出不同的结果