2

そこで、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)

これら 2 つの速度の違いは5桁です。

プロファイラーによると、setindex!本当に遅い理由はaf_assign_genaf_sum_allが本当に遅いからです。

何か不足していますか?私は GPGPU プログラミングの完全な初心者なので、これがどのように機能するのかを理解していない可能性があります。

4

0 に答える 0