>
>
> Thanks, parentheses do help.
>
> My project is running into a lot of these corner cases and I was wondering 
> if I could help by collecting them into some sort of vectorisation tests 
> that we could add to the test suite?
>
> I'm currently using this utility to check for vectorisation and 
> performance:
> https://github.com/damiendr/SpikeNet.jl/blob/master/src/Utils.jl
>
> Results with Julia 0.4-rc4:
>
> input_start!(net.input) 0.000004 seconds (2 allocations: 160 bytes)
> input_start!(net.somas) SIMD 0.000001 seconds
> route_rates!(net.input,net.ff_pathway,net.ff_dendrites) 0.000017 seconds 
> (2 allocations: 912 bytes)
> update!(net.ff_dendrites,net.dt) SIMD 0.000003 seconds (1 allocation: 16 
> bytes)
> set_current!(net.somas,Val{:Id},net.ff_dendrites) SIMD 0.000002 seconds
> update!(net.rc_synapses,net.dt) SIMD 0.000002 seconds (1 allocation: 16 
> bytes)
> set_current!(net.somas,Val{:Is},net.rc_synapses) SIMD 0.000004 seconds
> update!(net.somas,net.dt) 0.000007 seconds (1 allocation: 16 bytes)
> route_spikes!(net.somas,net.rc_pathway,net.rc_synapses) SIMD 0.000002 
> seconds
> record!(rec_spikes,1) 0.000002 seconds
> reset!(net.somas,net.dt) 0.000006 seconds (1 allocation: 16 bytes)
> record!(rec_soma,1) 0.000002 seconds
> record!(rec_dend,1) 0.000003 seconds
> record!(rec_ff,1) 0.000001 seconds
> record!(rec_rc,1) 0.000001 seconds
> learn!(net.somas,net.rc_pathway,net.somas,nothing) SIMD 0.000041 seconds
> learn!(net.input,net.ff_pathway,net.ff_dendrites,net.somas) SIMD 0.000011 
> seconds
>
> Results with Julia 0.5-dev Commit d9f7c2125831a16c2386888904f303846a1ced95 
> (2015-10-14 12:03 UTC)
>
> input_start!(net.input) 0.000003 seconds (2 allocations: 160 bytes)
> input_start!(net.somas) 0.000002 seconds
> route_rates!(net.input,net.ff_pathway,net.ff_dendrites) 0.000017 seconds 
> (2 allocations: 912 bytes)
> update!(net.ff_dendrites,net.dt) 0.000003 seconds (1 allocation: 16 bytes)
> set_current!(net.somas,Val{:Id},net.ff_dendrites) 0.000002 seconds
> update!(net.rc_synapses,net.dt) 0.000002 seconds (1 allocation: 16 bytes)
> set_current!(net.somas,Val{:Is},net.rc_synapses) 0.000004 seconds
> update!(net.somas,net.dt) 0.000007 seconds (1 allocation: 16 bytes)
> route_spikes!(net.somas,net.rc_pathway,net.rc_synapses) 0.000002 seconds
> record!(rec_spikes,1) 0.000001 seconds
> reset!(net.somas,net.dt) 0.000003 seconds (1 allocation: 16 bytes)
> record!(rec_soma,1) 0.000001 seconds
> record!(rec_dend,1) 0.000003 seconds
> record!(rec_ff,1) 0.000001 seconds
> record!(rec_rc,1) 0.000001 seconds
> learn!(net.somas,net.rc_pathway,net.somas,nothing) 0.000191 seconds
> learn!(net.input,net.ff_pathway,net.ff_dendrites,net.somas) 0.000031 
> seconds
>
> The main simulation loop in Julia 0.5-dev is still 1.5x slower than in 
0.4-rc4.

Reply via email to