View previous topic :: View next topic |
Author |
Message |
kybber Apprentice
Joined: 25 Jun 2002 Posts: 228 Location: Trondheim, Norway
|
Posted: Fri Jul 05, 2002 12:52 pm Post subject: Windows XP vs. Gentoo: Execution speeds (Matlab - specific) |
|
|
I am trying to transition from XP to Gentoo. One of the tools I use the most is Matlab. I was very surprised to see that the execution speed in Gentoo was actually 40-50% slower than that of Windows XP. I tried both simple for-loops in matlab-code and more complex c-based mex-functions (for you who do not know: these are compiled using gcc and run in the matlab environment), and the result was the same. This saddens me since executionspeed in Matlab is highly essential for my work.
Does anyone have similar experiences, or experiences that contradict this?
Has anyone installed Matlab in any Linux distro and compared executionspeed with Windows? |
|
Back to top |
|
|
delta407 Bodhisattva
Joined: 23 Apr 2002 Posts: 2876 Location: Chicago, IL
|
Posted: Fri Jul 05, 2002 4:50 pm Post subject: |
|
|
I run Windows 2000 under VMware under Gentoo and have found on occasion that it runs faster under VMware than it does natively on the same box.
What kernel are you using? It could be a config issue. _________________ I don't believe in witty sigs. |
|
Back to top |
|
|
kybber Apprentice
Joined: 25 Jun 2002 Posts: 228 Location: Trondheim, Norway
|
Posted: Tue Jul 09, 2002 7:00 am Post subject: |
|
|
I am using this kernel: linux-2.4.19-gentoo-r7
Since I am still quite a newbie with Linux I haven't messed too much around with the config, i.e. no RT scheduling, low-latency etc. Pretty much a default gentoo kernel with added support for my Dell laptop, filesystems, USB etc. I'll be happy to post the .config here if you think it could help in determining the problem. |
|
Back to top |
|
|
Ozymandias Tux's lil' helper
Joined: 10 Apr 2002 Posts: 81 Location: Netherlands
|
Posted: Tue Jul 09, 2002 9:21 am Post subject: |
|
|
Does matlab compile the code with gcc optimalisations, and are u quite sure matlab compiles these functions? I used matlab a time ago, allways thought it uses a interpeter.
But you didn't compile matlab yourself, so perhaps it compiles its code the same way as matlab was compiled, so it can link the code, but this will probably by with -march 386 and -O2 if you are lucky.
Last, winNT (and therefor win2000 and XP) give higher priority to applications that are in focus, try nicing matlab with a lower nice value.
greetz Ozy |
|
Back to top |
|
|
kybber Apprentice
Joined: 25 Jun 2002 Posts: 228 Location: Trondheim, Norway
|
Posted: Tue Jul 09, 2002 11:23 am Post subject: |
|
|
You are correct that Matlab uses an interpreter for its m-scripts, but you can also program so called mex-functions in c and compile them in Matlab. This increases executionspeed by an order of 10-100 easily.
The way Matlab compiles mex-functions is defined in ~/matlab/R12/mexopts.sh. My settings are:
Code: |
RPATH="-Wl,--rpath-link,$TMW_ROOT/extern/lib/$Arch,--rpath-link,$TMW_ROOT/bin/$Arch"
CC='gcc'
CFLAGS='-fPIC -march=i686 -O3 -pipe -D_GNU_SOURCE -pthread'
# CFLAGS='-fPIC -D_GNU_SOURCE -pthread'
CLIBS="$RPATH $MLIBS -lm"
COPTIMFLAGS='-O -DNDEBUG'
CDEBUGFLAGS='-g'
#
LD="$COMPILER"
LDFLAGS="-pthread -shared -Wl,--version-script,$TMW_ROOT/extern/lib/$Arch/$MAPFILE"
LDOPTIMFLAGS='-O'
LDDEBUGFLAGS='-g'
#
POSTLINK_CMDS=':'
|
I have manually added the '-march=i686 -O3 -pipe' myself, according to my settings in /etc/make.conf. This didn't make any difference in executionspeed. (Though I don't know if any of the other flags, e.g. COPTIMFLAGS='-O...' corrupts my settings).
To clarify: Both Matlab's own m-scripts (using interpreter) and compiled mex-functions (using the above settings) are 40-50% slower in Linux than in XP.
Nice'ing matlab with differenc evalues didn't make any noticeable difference. |
|
Back to top |
|
|
Manny Calavera n00b
Joined: 21 May 2002 Posts: 68 Location: Germany / near Munich
|
Posted: Tue Jul 09, 2002 12:00 pm Post subject: |
|
|
There is a basic rule: A software runs best under the environment it's created in. It's not always true but in this case i think it's all about 'bad' porting.
see you,
- Manny - _________________ Viva la revolución! |
|
Back to top |
|
|
Naan Yaar Bodhisattva
Joined: 27 Jun 2002 Posts: 1549
|
Posted: Tue Jul 09, 2002 12:04 pm Post subject: |
|
|
It's been quite a while, but I believe Matlab was first available on Unix before DOS/Windows.
Manny Calavera wrote: | There is a basic rule: A software runs best under the environment it's created in. It's not always true but in this case i think it's all about 'bad' porting.
see you,
- Manny - |
|
|
Back to top |
|
|
Ozymandias Tux's lil' helper
Joined: 10 Apr 2002 Posts: 81 Location: Netherlands
|
Posted: Tue Jul 09, 2002 12:56 pm Post subject: |
|
|
you could email MathWorks to ask them about it.
but matlab was first (in 1970's) for fortran, so later they changed to c, the question is what are they based on now? |
|
Back to top |
|
|
mglauche Retired Dev
Joined: 25 Apr 2002 Posts: 564 Location: Germany
|
Posted: Tue Jul 09, 2002 1:14 pm Post subject: |
|
|
I think they probably used intel's compiler for the win32 platform, which can geratly enhance execution speed on some processors (like pentium4). This could explain the speed difference.
Also I think your compliler plays the smallest part in the game, becuse its important which compiler THEY used for compiling their math libraries. (i somehow doubt, the provide you with full source, do they ?) |
|
Back to top |
|
|
masseya Bodhisattva
Joined: 17 Apr 2002 Posts: 2602 Location: Baltimore, MD
|
Posted: Tue Jul 09, 2002 1:50 pm Post subject: |
|
|
mglauche wrote: | I think they probably used intel's compiler for the win32 platform, which can geratly enhance execution speed on some processors (like pentium4). This could explain the speed difference. |
Wouldn't they then have to choose some optimizations to make use of the intel compiler? How would a windows based installation of Matlab know which pre-compiled executable to run? Does Matlab compile its libraries at install time in windows? I would think that a clickty-click install on windows would run slower than a gcc-based optimized version on any linux system because it would have to be compiled to work with a wide range of processors and the optimized version is, well, optimized. _________________ if i never try anything, i never learn anything..
if i never take a risk, i stay where i am.. |
|
Back to top |
|
|
bidz n00b
Joined: 08 Jun 2002 Posts: 54 Location: Norway
|
Posted: Tue Jul 09, 2002 1:59 pm Post subject: |
|
|
what about trying out the Intel C/CPP compiler for Linux (i think version 6 is the latest, atleast thats what i have) - and see if that makes a difference in speed, etc. _________________ bidz @ efnet |
|
Back to top |
|
|
kybber Apprentice
Joined: 25 Jun 2002 Posts: 228 Location: Trondheim, Norway
|
Posted: Wed Jul 10, 2002 9:14 am Post subject: |
|
|
A colleague of mine who dual-boots (Mandrake) Linux and Windows has experienced a similar behavior as with my setup. This leads me to believe that it isn't Gentoo that's at fault (as expected! ), but rather the Linux Matlab binaries that haven't been compiled optimally. Perhaps they just used pure i386 compilation? However, considering the fact that Matlab is supposed to handle highly intensive mathematical analysis and simulation, one'd think they at least would try to get the binaries optimized...
Anyways, I have contacted Mathworks and am currently awaiting their response. I'll be happy to post the conclusion (if any) here. |
|
Back to top |
|
|
KiTaSuMbA Guru
Joined: 28 Jun 2002 Posts: 430 Location: Naples Italy
|
Posted: Wed Jul 10, 2002 2:05 pm Post subject: |
|
|
I wonder if there can be found additional toolboxes (or use the matlab ones) under octave... That would show them what optimization means...
On the other hand, other Open Source symlink-like apps come with either few ready "nodes" or with extremely barebone documentation or both.
As you can imagine, I cannot afford a un*x version of matlab, so I'm pretty stuck on this one. _________________ Need to flame people LIVE on IRC? Join #gentoo-otw on freenode! |
|
Back to top |
|
|
Jondot n00b
Joined: 11 Apr 2002 Posts: 55 Location: Bordeaux, France
|
Posted: Thu Jul 11, 2002 6:51 am Post subject: |
|
|
KiTaSuMbA wrote: | I wonder if there can be found additional toolboxes (or use the matlab ones) under octave... That would show them what optimization means...
On the other hand, other Open Source symlink-like apps come with either few ready "nodes" or with extremely barebone documentation or both.
As you can imagine, I cannot afford a un*x version of matlab, so I'm pretty stuck on this one. |
I don't think octave has toolboxes, but scilab has them (and does have an ebuild).
scilab has never been faster than on my gentoo box btw...
As concerns slowness for the .c added externally to matlab, it has already been mentionned, but I guess trying out intel compiler (if your proc is an intel of course !) could speed up things a little... (it does have an ebuild : emerge icc). AFAIK, icc is free for personnal (not commercial) use. |
|
Back to top |
|
|
|