そこで、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_gen
とaf_sum_all
が本当に遅いからです。
何か不足していますか?私は GPGPU プログラミングの完全な初心者なので、これがどのように機能するのかを理解していない可能性があります。