ArrayFire.jl setindex!非常慢

时间:2016-07-05 17:25:28

标签: performance gpu julia gpgpu arrayfire

所以我试图使用ArrayFire.jl来加速一些Julia代码,但是我所做的一切都在减慢它的速度。使用@profile,我已将问题追踪到setindex!。这是测试代码:

using ArrayFire

function f(x::Array{Float32})
    y = zeros(Float32, size(x))
    for i in 1:length(x)
        y[i] = x[i]
    end
    return y
end

function f(x::AFArray{Float32})
    y = AFArray(zeros(Float32, size(x)))
    for i in 1:length(x)
        y[i] = x[i]
    end
    return y
end

srand(1)

a = rand(Float32, 20, 20)
b = AFArray(a)

@time f(a)
@time f(b)

这两者之间的速度差异五个数量级。

根据分析器,setindex!真的很慢的原因是因为af_assign_genaf_sum_all非常慢。

我错过了什么吗?我是GPGPU编程的完全新手,所以我可能根本不理解这一切是如何工作的。

0 个答案:

没有答案