나는 현재 (내가 matlab에 함께 작업 한) N^3의 계산 속도가 NxNxN보다 느린 MATLAB에서지수 계산 속도
줄리아 테스트입니다. 이것은 N^2 및 NxN에서는 발생하지 않습니다. 이들은 속도가 아닌 정확도를 선호하기 때문에 고차원 지수를 계산하는 데 다른 알고리즘을 사용합니다.
나는 줄리아가 똑같은 일을한다고 생각한다.
줄리아가 적어도 큐브 지수에 대해 기본 알고리즘 대신 곱셈을 사용하여 N의 지수를 계산하도록하는 방법이 있는지 물어보고 싶습니다.
몇 시간 전 나는 이것을 matlab에 몇 가지 테스트를 수행했다. 줄리아에게 그 코드를 번역했습니다. 코드
링크 : http://pastebin.com/bbeukhTc (나는 :(여기에 모든 링크를 업로드하지 못할) matlab에 2014 스크립트의
결과 :
Exponente1
경과 시간은 68.293793 초 (최소 17.7 배)
Exponente2
경과 시간은 24.236218 초입니다. 합니다 (smallests의 6.3 배)
Exponente3
경과 시간 3.853348 초이다. 줄리아 0.46에 스크립트의
결과 :
Exponente1
18.423204 초 (8.22 K 할당 : 372.563 KB) (최소의 51.6x 회)
Exponente2
13.746904 초 (9.02k 할당 : 407.332KB) (최소 38.5 배)
Exponente3
0.356875 초 (10.01 K 할당 : 450.441 KB) 내 테스트에서
줄리아는 matlab에보다 빠른,하지만 난 상대 이전 버전을 사용하고 있습니다. 나는 다른 버전을 시험 할 수 없다.
^(x::Float64, y::Integer) =
box(Float64, powi_llvm(unbox(Float64,x), unbox(Int32,Int32(y))))
^(x::Float32, y::Integer) =
box(Float32, powi_llvm(unbox(Float32,x), unbox(Int32,Int32(y))))
julia/base/fastmath.jl : 줄리아의 소스 코드를 확인
답장을 보내 주셔서 감사합니다. math.jl 및 fastmath.jl에 대한 정보는 내가 찾고있는 정보입니다. –
'@ fastmath'는 실제로'pow_fast'를 호출합니다.이 함수는 적절한 유형의'powi_llvm'을'@fastmath'없이 호출합니다. REPL로부터'@fastmath' 매크로가 호출 될 때 타입 - 추론 혼란이 있습니다. –
또한'pow_fast'는'jl_powi_llvm'을 호출합니다. 그래서 powi_llvm의 마지막 링크에'jl_'을 추가 할 수 있습니다. 그리고 나를위한 몇 가지 물건을 명확히 한 위대한 답변에 감사드립니다 (저는 0.5로 일하고 있습니다). –