comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » IDL program runs faster on slower CPU
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: IDL program runs faster on slower CPU [message #88071 is a reply to message #88069] Tue, 18 March 2014 14:40 Go to previous messageGo to previous message
Jim  Pendleton is currently offline  Jim Pendleton
Messages: 165
Registered: November 2011
Senior Member
On Tuesday, March 18, 2014 6:22:44 AM UTC-6, Arthur Vigan wrote:
> Le lundi 17 mars 2014 18:33:27 UTC+1, Craig Markwardt a écrit :
>
>> [ I'm having lots of trouble posting from Google Groups the past few days. ]
>
>>
>
> Me too!
>
>
>
>> On Sunday, March 16, 2014 6:15:04 PM UTC-4, Arthur Vigan wrote:
>
>>
>
>>> Strangely, the code runs about 4 to 5 times faster on the MacBook Pro. The code is strictly identical, with the same starting point, and it finds exactly the same result in the same number of iterations. I also mention that the program does not rely on disk access that could slow things down: all the data is in memory.
>
>>
>
>>
>
>>
>
>> I would suggest using PROFILER to find out where the bottleneck is. My first guess is you have some numerical faults like NaNs which are being handled by the two platforms differently. Sometimes numerical exceptions are handled very slowly because they take a round trip to the kernel.
>
>
>
> It could be a possibility, but after running the profiler I am not so sure. The profiler output seems to show very mixed results, with some things running faster on the Mac, and some things running faster on the server. But more generally, any complex program seems to run faster on the Mac
>
>
>
> I just ran a simple test on the two machines:
>
>
>
> Profiler,/SYSTEM & Profiler
>
> t0 = systime(/sec)
>
> a = replicate(!dpi,10000,10000)
>
> e = exp(a)
>
> l = alog(a)
>
> s = sin(a)
>
> c = cos(a)
>
> print,systime(/sec)-t0
>
> Profiler,/REPORT
>
>
>
> On the Mac:
>
>
>
> Module Type Count Only(s) Avg.(s) Time(s) Avg.(s)
>
> ALOG (S) 1 1.661171 1.661171 1.661171 1.661171
>
> COS (S) 1 1.357197 1.357197 1.357197 1.357197
>
> EXP (S) 1 0.541147 0.541147 0.541147 0.541147
>
> PRINT (S) 1 0.111763 0.111763 0.111763 0.111763
>
> PROFILER (S) 1 0.000024 0.000024 0.000024 0.000024
>
> REPLICATE (S) 1 0.119898 0.119898 0.119898 0.119898
>
> SIN (S) 1 1.213518 1.213518 1.213518 1.213518
>
> SYSTIME (S) 2 0.000008 0.000004 0.000008 0.000004
>
>
>
> On the Linux server:
>
>
>
> Module Type Count Only(s) Avg.(s) Time(s) Avg.(s)
>
> ALOG (S) 1 0.729371 0.729371 0.729371 0.729371
>
> COS (S) 1 0.721096 0.721096 0.721096 0.721096
>
> EXP (S) 1 0.635157 0.635157 0.635157 0.635157
>
> PRINT (S) 1 0.000040 0.000040 0.000040 0.000040
>
> PROFILER (S) 1 0.000014 0.000014 0.000014 0.000014
>
> REPLICATE (S) 1 0.137368 0.137368 0.137368 0.137368
>
> SIN (S) 1 4.108430 4.108430 4.108430 4.108430
>
> SYSTIME (S) 2 0.000006 0.000003 0.000006 0.000003
>
>
>
> Some basic functions seem to run much faster on linux (alog, cos), while others run faster on the Mac (sin, replicate). I really don't understand...
>
>
>
> -- Arthur;

What are the outputs on both machines from
IDL> help, /str, !cpu

Unless you've changed defaults, you have enough elements in your array (1.e8) that the thread pool should be kicking in for the vectorized functions.

Any chance you have one or more process limits on your Linux account that could cause memory to be paged?

Jim P.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: IDL's function SFIT coefficients
Next Topic: HOW TO COMPUTE BOUNDARY VALUES WHEN YOU HAVE TWO SPIKES IN YOUR DATA

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 17:29:33 PDT 2025

Total time taken to generate the page: 0.00393 seconds