# Which processor should I consider buying for a desktop built for scientific computing?

I run Python/C simulations for biological problems, so the range of computational tasks can be broad. Here are some examples:

1) continuum model simulations: FEM type

2) agent-based simulations: each agent may be a 2D polygon, on whose vertices ODEs are defined, modelling the time evolution of interesting variables, and interactions may be defined -- such a model may involve lots of computational geometry

3) agent-based simulations: each agent may be modelled using level set methods

4) agent-based simulations: interacting particle systems which are evolved using stochastic methods (e.g. Monte Carlo)

5) molecular dynamics simulations

Currently, I have access to a computer with an Intel i5-2500K processor, but it is not my own, and I can only use it when free. I am running a model of type 2), and it may take me a few hours if there are lots of agents.

I have a small budget (~$600 CAD) for a computer solely targeted towards scientific computing. What sort of processor should I look into picking up? What are some important terms and definitions I should know? ## 2 Answers Disclaimer: most of this is purely opinion. In the$600 range for a whole computer, I'm not sure that processor matters all that much, as long as the architecture is x86. If you want to run simulations locally, memory would probably be the first thing that I'd look at spending money on, and since the main use of the computer is scientific computing, you'll probably want to skimp on just about everything but memory and maybe CPU. Memory will limit your problem size; clockspeed gains by getting more expensive CPUs are going to be on the order of 10-20%, maybe, and are less worth it for serial (or small-scale parallel) simulations. You'll probably want as much (ideally, fast) memory as you can afford, although if you know you're not going to be working on large problems, or manipulating large data sets, it may not be crucial to get more than 4-12 GB of RAM.

You'll need to have a graphics card to drive a monitor, but it's likely not worth spending the money on anything more than a basic GPU with that sort of budget.

• I agree. I would just go with the basic built-in Intel GPU. – LKlevin Jul 13 '14 at 10:14
• Given the budget, AMD CPUs may be slightly more cost effective. The tradeoff between more physical cores vs. Intel's hyperthreading skews heavily toward more physical cores for scientific computing. This is especially true since many of your applications are typically run on multiple cores, especially agent-based simulations and molecular dynamics. – Doug Lipinski Jul 13 '14 at 16:40
• @DougLipinski If I buy a processor with more physical cores, do I have to consciously design my programs to be multiprocessed? The impression I am getting from reading Wikipedia's Intel HT thread is that the operating system handles the parallelization? – user89 Jul 13 '14 at 18:56
• How important would something like overclocking be? – user89 Jul 13 '14 at 19:03
• @user89 A program must be written to take advantage of multiple cores, most scientific software is. If you're writing your own code, you would have to build in parallelism (search MPI or openMP for much information). Hyperthreading allows the OS to address a single core as if it were two cores which helps reduce scheduling instructions. It will not speed a serial code and it will always be slower than two equivalent physical cores. – Doug Lipinski Jul 13 '14 at 20:43

(Turning a previous comment into an answer, because I want to say a bit more.)

One thing you should keep in mind is that your time is significantly more valuable than any hardware (at least in the workstation range). So if you spend three days assembling your own machine (or fiddling with the voltages and memory timings to get an overclocked machine even halfway stable) to save -- say -- \$200 on a 30% faster machine, you have already lost money. (The same applies to time spent in researching and picking components, by the way.)

Hence my recommendations:

1. Do not worry too much about specific components; in this price range, the performance differences are unlikely to exceed 20%, which is seldom noticeable. (You will spend more time implementing/debugging/parsing output than the difference in calculation speed.) One exception is if you want to go into GPU computing, where the available software stack and application performance depends much more on the specific hardware. (But see above re: your time vs. money.)

2. If your group or department or institution has IT professionals on staff, ask them. They might not know as much about high performance computing as some people on this site, but they will know about any deals with specific vendors that would help you get the most bang for your six hundred bucks.