Done, see https://github.com/JuliaLang/julia/issues/17509



On Wednesday, July 20, 2016 at 5:21:23 PM UTC+2, Cedric St-Jean wrote:
>
> That does look suspicious. Maybe file an issue if there isn't one?
>
> On Wed, Jul 20, 2016 at 4:31 AM, Marius Millea <marius...@gmail.com 
> <javascript:>> wrote:
>
>> I don't think that theory totally works, it seems to scale to some extent 
>> with the length of time to load the package itself. Another example:
>>
>> julia> tic(); using PyPlot; toc()
>> elapsed time: 3.395904233 seconds
>>
>> vs
>>
>> julia> addprocs();
>> julia> tic(); using PyPlot; toc()
>> elapsed time: 13.877550518 seconds
>>
>> or even:
>>
>> julia> addprocs();
>> julia> using Empty; tic(); using PyPlot; toc()
>> elapsed time: 7.357315778 seconds
>>
>>
>> In any case, it can get pretty painful loading a few modules at the 
>> beginning of my parallelized scripts... 
>>
>>
>>
>>
>> On Tuesday, July 19, 2016 at 4:55:40 PM UTC+2, Cedric St-Jean wrote:
>>>
>>> Yes, that's what I meant. Presumably the multi-proc machinery is getting 
>>> compiled at the first `using`. It's the same reason why "println(2+2)" is 
>>> very slow on first use, but fast afterwards. 
>>>
>>> On Tue, Jul 19, 2016 at 10:41 AM, Marius Millea <marius...@gmail.com> 
>>> wrote:
>>>
>>>> Seems it may have something to do with that. If I understood correctly 
>>>> what you're saying, if I create Empty2.jl defining module Empty2, I get, 
>>>>
>>>> julia> addprocs();
>>>>
>>>> julia> tic(); using Empty; toc()
>>>> elapsed time: 2.706353202 seconds
>>>> 2.706353202
>>>>
>>>> julia> tic(); using Empty; toc()
>>>> elapsed time: 0.00042397 seconds
>>>> 0.00042397
>>>>
>>>> julia> tic(); using Empty2; toc()
>>>> elapsed time: 0.029200919 seconds
>>>> 0.029200919
>>>>
>>>> julia> tic(); using Empty2; toc()
>>>> elapsed time: 0.000193097 seconds
>>>> 0.000193097
>>>>
>>>>
>>>>
>>>> That first load of Empty2 at 0.02 secs is much more in line with what 
>>>> loading it on a single processor takes. 
>>>>
>>>>
>>>>
>>>> On Tuesday, July 19, 2016 at 4:13:15 PM UTC+2, Cedric St-Jean wrote:
>>>>>
>>>>> Maybe there is some warm-up JIT time in there? If you create an Empty2 
>>>>> module and load it after Empty, is it also slow?
>>>>>
>>>>> On Tuesday, July 19, 2016 at 9:07:01 AM UTC-4, Marius Millea wrote:
>>>>>>
>>>>>> I noticed that once I addprocs(), subsequent "using" statements were 
>>>>>> extremely slow. I guess in this case its loading the module on each 
>>>>>> processor, but if it happens in parallel it shouldn't be *that* much 
>>>>>> more 
>>>>>> wall time, and here I'm talking about two orders of magnitude 
>>>>>> difference. 
>>>>>>
>>>>>> Assuming I've got a file Empty.jl who contents is,
>>>>>>
>>>>>> module Empty
>>>>>> end
>>>>>>
>>>>>> then single threaded:
>>>>>>
>>>>>> tic()
>>>>>> using Empty
>>>>>> toc()
>>>>>> elapsed time: 0.024461076 seconds
>>>>>>
>>>>>> vs. multi-threaded:
>>>>>>
>>>>>> addprocs() #I've got 8 procs
>>>>>> tic()
>>>>>> using Empty
>>>>>> toc()
>>>>>> elapsed time: 2.479418079 seconds
>>>>>>
>>>>>>
>>>>>> Should I submit this as an Issue on Github, or is there something 
>>>>>> else going on? I've checked both Julia 0.4.5. and 0.5 (01e3c8a). I'm on 
>>>>>> Ubuntu 16.04 64bit. 
>>>>>>
>>>>>>
>>>>>>
>>>
>

Reply via email to