MATLAB Answers

Server configuration for running MATLAB

6 views (last 30 days)
Soudipan Maity
Soudipan Maity on 1 Oct 2019
Answered: Jason Ross on 3 Oct 2019
Hello. We are planning to setup a server in our lab to be used by around 5-6 users primarily for fast computational purposes such as running MATLAB (optimisation problems, etc.), DIgSILENT PowerFactory, and more such high-octane applications. What type of specifications should we go for? I suppose a fast CPU with a high number of cores, at least 15-20 GB RAM and a Graphical Processing Unit should be mandatory. Any suggestions on this regard would be of great help.

  1 Comment

Walter Roberson
Walter Roberson on 1 Oct 2019
Is the GPU for graphics rendering, or for fast computations ?
If it is for fast computations, what kind?
Note that while using MATLAB, only one process at a time can access one GPU.
There are trade-offs in using a large number of cores on the same task: the communications overhead starts to become large enough that you do not get much benefit. There are, though, some kinds of programs that can run different sections independently well, so you have to know your computational goals.
I am finding on my system that disk access is becoming a bottleneck. In my particular case, not so much for computations, but rather for tasks such as doing backups. USB4 has just been approved, and you should probably have a look at that and ensure that your proposed machine will be able to use it when it arrives. That might mean going for Thunderbolt drives now, for example.

Sign in to comment.

Answers (1)

Jason Ross
Jason Ross on 3 Oct 2019
Questions I would ask if someone came to me:
  • You mention that 5-6 users will be accessing this machine. What sort of access pattern will they use? Will it be a shared resource managed by some sort of application, e.g. they can "reserve time" on it using Outlook, or they will yell across the lab and see if someone is using it? Will you expect 5-6 people to log in simultaneously and do their work? Will it be set up as a server no one logs into and they will submit jobs to some sort of scheduler?
  • What operating system will you be installing? If you are installing Windows and want simultaneous access for 5-6 people you will need to use a Server variant -- the desktop versions limit simultaneous RD sessions.
  • CPU specifications -- how well are these applications capable of parallelizing tasks? It also depends on your usage model from the first question how you go. Increasing core count and processor speed can have an enormous impact on the cost of the server so it pays to know why you are buying what you are buying. Also look at two-socket systems, they are very common in servers.
  • GPU specifications -- what sort of tasks are you sending to the GPU? Are they using singles math or do you use doubles? The GPUs which can process doubles quickly tend to be more expensive, and some require a server chassis which can provide cooling for them. If you are using Windows Remote Desktop to access the server, you will want to specify a GeForce Titan, Tesla or Quadro card so it can be used. Linux does not have this requirement.
  • RAM -- This is driven by the number of simultaneous accesses and the applications you run. I'm guessing you run these already so you should be able to get some idea of their RAM consumption as they are in use. If you are going to have six people accessing and running these programs simultaneously you should scale accordingly. Make sure you know what the optimal memory configuration for the server is, the server vendor should be able to advise.
  • Storage -- this is driven by data set size, OS size, application installations. Make sure that you specify adequate storage size to let the OS grow over time as more patches and updates are installed. On Windows the OS itself can start at 40GB and will grow. Applications can be 10-20 GB each. You probably want to go with SSDs and avoid spinning disks, and will likely need to use some sort of RAID (many servers ship with this on-board) to present one filesystem to the users.
Other server concerns:
  • Monitoring and maintenance. Who is ultimately resonsible for the server? Is it something someone needs to be monitoring 24/7, and they will be paged if it goes down. Who is responsible for installing patches and updates? How do you communicate downtime?
  • Remote, out-of-band access. Servers have integrated modules that exist outside the operating system that allow you to view direct console output and power cycle the machine from anywhere you can get a web connection. Is this a feature you would need.
  • Documentation and (personal) backup. If the primary server admin is unreachable and the server needs something or an application isn't working, who is the backup. Where do you document how to reboot the server and check that everything is running OK?
  • Backup. Does the server need to be backed up? Where does it get backed up to? Who is responsible for the backups? What is the recovery process?
  • Cleanup of temp files and cruft. Windows has a number of places it drops temporary files. So does Linux. As the server stays up these will fill. How do you clear these before they fill up the disk?
  • Warranty and service. Servers typically come with a 3 year warranty -- but you need to know how it gets serviced and how fast it gets serviced when you get the warranty. Are you going to pay for on-site service, or will you need to send the thing back if it breaks?

  0 Comments

Sign in to comment.

Sign in to answer this question.