Pinned topic Good machine configuration
Answered question This question has been answered.
Unanswered question This question has not been answered yet.
Our department has a grant (around 20k USDolars) to buy a machine to solve Mixed Integer Programming Problems (e.g. VRP, Scheduling, Cutting and Packing) using CPLEX and similar solvers. I would like to know what kind of machine you guys use to solve such optimization problems, and if you have some suggestions for configuring a good machine. I really appreciate your help!
Updated on 2012-10-25T15:35:51Z at 2012-10-25T15:35:51Z by SystemAdmin
Re: Good machine configuration2012-10-05T21:08:05ZThis is the accepted answer. This is the accepted answer.In descending order of importance to me:
I would get a machine with at least two cores, if for no other reason than to keep operating system housekeeping chores from interfering with CPLEX.
More and faster RAM will likely pay dividends. CPLEX tries to keep the search tree in memory as much as possible.
A 64-bit system will let you use more RAM (and may run code faster, clock size held constant).
Faster CPUs are of course better than slower ones.
More cores is probably better. I say "probably" because certain things (certain callbacks?) will cause CPLEX to drop down to a single core, regardless of what is available. I'm a bit fuzzy on whether that can be overridden; one of the IBMers can presumably answer that point. If you are going to be using the interactive solver, or using an API but not using callbacks, this may be a non-issue.
My lowest priority would be to increase the speed (and possibly capacity) of the disk subsystem. If your search trees get large enough that CPLEX has to write portions to disk, this may help; but I would max out RAM before worrying about the disk.
Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
Re: Good machine configuration2012-10-16T08:15:28ZThis is the accepted answer. This is the accepted answer.
- SystemAdmin 110000D4XK
To choose the CPU, you could take a look at www.spec.org, click on "Search Results", and search for the CPU type that you are considering. Then, look at the "SPECfp2006" results (not the "SPECint2006" results) and watch out in particular for the "450.soplex" benchmark. Because SoPlex is a simplex solver, it behaves very similar to CPLEX in terms of CPU and memory usage, at least if we only consider sequential processing for now.
We observe that for most applications, memory throughput and raw CPU clock speed are most important. Having a larger number of cores (say, more than 6) is often not as useful as having a higher clock speed.
The size of the RAM matters a lot in the sense that if you do not have enough to fit your problem and the search tree into memory, you will observe a severe performance penalty hit or just cannot solve your problem at all. But if you have enough memory, then adding even more memory will not make the solving process faster.
Note also that the performance of some systems (e.g., the newer double-socket Intel systems) depends greatly on the exact configuration of your memory. For example, if your system has 6 memory pipelines, then you want to install DIMMs in multiples of 6. Moreover, using all of the memory banks often comes with an automatic decrease in the memory bus frequency, which you want to avoid. So, it is often better to use fewer but larger DIMMs than using all of the memory banks.