2015-08-07 3 views
1

Как мы можем профилировать параллельный код в julia? Этот вопрос задан before. На самом деле, после консультации по вызову профиля на каждом узле не работает.Профилирование параллельного кода Julia

function profileSlaveTask(param) 
     @profile slaveTask(param) 
     return Profile.retrieve() 
end 
rrefs=Array(RemoteRef,length(workers())) 
machines=workers() 

for i=1:length(machines) 
    rrefs[i]= @spawnat machines[i] slaveTask(initdamp) 
end 
pres= fetch(rrefs[1]) 
using ProfileView 
ProfileView(pres[1],lidict=pres[2]) 

Использование ProfileView я получаю: enter image description here

ответ

1

отлично работает для меня (джулия 0.4.0-DEV, Ubuntu 14,04):

p = addprocs(1)[1] 

@everywhere function profile_svd(A) 
    println("starting profile_svd") 
    @profile svd(sdata(A)) 
    println("done with svd") 
    Profile.retrieve() 
end 

println("about to allocate SharedArray") 
A = SharedArray(Float64,1000,1000) 
println("about to fill SharedArray") 
rand!(sdata(A)) 
println("about to call worker") 
bt, lidict = remotecall_fetch(p, profile_svd, A) 
Смежные вопросы