How do I choose computer hardware which best optimizes the performance of MATLAB?

For example:

  • I would like to know what the minimum specification are for RAM

  • I would like to know which processor is best

  • I would like to know what system is best, UNIX, Windows?

Answers


Many MATLAB users need to optimize MATLAB's performance in order to complete involved computational tasks in minimal time. It is apparent that the performance of any application is dependent on the availability of system resources. Running MATLAB along with a number of other processes will degrade MATLAB's performance.

I do not recommend specific brands of computer hardware, however there are certain system requirements, which MATLAB needs to run properly. For more information on system requirements for MATLAB, see the following:

http://www.mathworks.com/support/sysreq/

http://www.mathworks.com/products/matlab/choosing_hardware.html

This document will address the issue of which computer hardware will help MATLAB perform the best.

NOTE: In answering this question I can only suggest some correlations, not absolutes. Unless you actually run the BENCH command in MATLAB on a particular configuration it is not possible to predict beforehand any measure of performance for MATLAB. An application can be memory-intensive or may heavily use the Central Processing Unit (CPU) for numerical computations. You can benchmark your system by typing BENCH in the MATLAB command window.

It is also worth noting that the MATLAB Accelerator, a performance enhancement added in MATLAB 6.5 (R13) works most significantly on x86 based processors, such as Intel and AMD. More information on writing MATLAB code for performance can be found in the Related Solution listed at the bottom of the page.

It is strongly suggested before you buy a configuration that you download a trial version of MATLAB and run BENCH on that configuration to help in your evaluation. You should not exclusively use BENCH for the evaluation. However, using it can help you discover the performance of the machine for some common MATLAB applications to a first approximation. The systems listed in BENCH are the ones that have been have evaluated. There may be new systems available that have not assessed and therefore are not in the list.

Also note that as of MATLAB 7.4 (R2007a), it is possible to enable MATLAB to use the multithreading capabilities of your processor. This might increase performance when executing lengthy element-wise operations. More information is available in the "MATLAB Multiprocessing" section of the documentation.

The "Multithreaded Computation" example benchmarks the effect of multithreading. The categories focused on in this benchmark are: - LU: Linear algebra. - FFT: Computation. - ODE: Function calls. - Sparse: Computation - 2D graphics : - 3D graphics :

Below are two groups of correlations. The strong list I understand better and can link strongly to changes in performance. The weak list I understand less and they typically have a more nebulous effect on performance.

I) Strong correlations:
  1. Clock speed and processor family: Performance can mathematically be computed as follows:

Performance = Clock Rate / (# of CPU instructions * cycles per CPU instruction)

The variables in the denominator are functions of the instruction set, addressing mode, and hardware implementation of the processor components.

Within a processor family the higher the clock rate the better the performance should be. The rate of change in performance is probably smaller at the higher clock rates because other system parameters such as main memory and bus speeds begin to play a critical role. So just going from a 600MHz Pentium to 1.1GHz Pentium will probably not show the corresponding change in performance.

In general you cannot compare the clock speeds of different microprocessor families. For example, many RISC microprocessors can execute multiple instructions per clock cycle. This means, even though their clock rates may be smaller than those that perform fewer instructions per clock cycle, they can potentially perform more work if kept busy.

  1. Other necessary Hardware: A MATLAB application can only be as fast as the slowest hardware component involved such as a data acquisition card to read data in for real time simulation or a graphic card to display results instantly. To get the maximum performance out of MATLAB graphics use the fastest card that you can afford and one that implements as much of the OpenGL in hardware as possible.

  2. Enough main memory (RAM): Adding more RAM than MATLAB will be using will understandably only have a negligible effect on performance since it is the working set size that determines how much memory you need and this varies tremendously on the application. Also, other applications running alongside MATLAB on the same system vary in usage of memory. I recommend a minimum of 512 MB of RAM for Windows systems. See the systems requirements page mentioned above. The speed in which RAM can be accessed is also an important factor.

You may also want to review The Technical Support Guide to Memory Management for a better understanding of how MATLAB uses memory:

http://www.mathworks.com/support/tech-notes/1100/1106.shtml

II) Weak to nonexistent correlations:
  1. Number of processors:

    Since M-Code execution is not fully multi-threaded, adding processors might not change the performance. However, if you have many applications running on the machine, then having multiple processors can greatly improve the throughput of the system.

  2. Bandwidth of the system bus: This is a difficult area to assess. It becomes critical if you are moving large amounts of data in and out of main memory caused either by memory paging of large data sets or file I/O operations in support of database operations.

  3. Amount of cache memory: Cache memory is fast but expensive and therefore usually limited. The cheaper but slower RAM becomes active whenever the cache memory is exhausted.

This is also difficult to assess without careful benchmarking. Unless special needs are identified, systems generally come with an adequate amount of cache memory for many common applications.

Finally, you may consider posting a message to the newsgroup (comp.soft-sys.matlab). This is a MATLAB user based newsgroup viewed by thousands daily. It is likely that someone there may have experience with these issues.

You can access this newsgroup from the MATLAB Central web site at:

http://www.mathworks.com/matlabcentral

This is a popular URL for viewing newsgroups.


Read the MatLab System Requirements


I'm using a Widows x64 8-core machine with plenty of memory. This said I still run into performance problems (both time and space) with matlab when I try to compute everything first and in one go, and then think about what I actually want to compute. Its more how you compute it than what you compute on (as long as you have a "good enough" computer).

When asking another question (vaguely related to this one) I got the following link to handling large data sets efficiently in Matlab. The first part of the presentation looks at hardware. It may be interesting to look at before deciding what you want.


If your problem is an old PC (512MB Ram and a Celeron P4 processor with a sped less than 3 GHz, with windows 2000 or XP, for example) you can use Matlab 7 with no performance problems. The codes written in Matlab 7 can run in Matlab 7.6 (release in 2008) and you can upgrade easily later. (Matlab 7 installer comes in 2 Cds)

I tested Matlab 7.6 in a Toshiba Satellite Laptop, dual core, 2GB RAM. Installer comes in a DVD. Too much for my old PC with... 512MB RAM and Celeron processor.

I don't recommend you old Matlab 6.5 because GUIs and simulink designs don't run in Matlab 7x


Need Your Help

Check for Active internet connection Android

java android networking wifi ping

I am trying to write a part in my app that will differentiate between an Active Wifi connection and an actual connection to the internet. Finding out if there is an active Wifi connection is pretty

Httpclient 4, error 302. How to redirect?

java authentication post httpclient http-status-code-302

I want to access one site that first requires an (tomcat server) authentication and then log in with a POST request and keep that user to see the site's pages. I use Httpclient 4.0.1