0

My question is similar to some "speed vs. cores"-questions that have already been asked on this website. However, I am interested in some very specific and technical points. So I hope that my question will be eligible for an "answer" instead of being solely opinion-based.

At my workplace, we frequently approach certain statistical problems using computer simulation. The software we use is largely meant for single cores, but we run it in parallel using multiple instances of these programs. The simulations are computationally intensive, and one iteration may take up to one hour to complete.

To enhance the speed of these calculations, I have been asked to propose a few models that would be best suited. However, I am unsure if, at this point, the computations would benefit from higher clock speed more than they would from more parallelized processes.

The computers we currently use are server-scale solutions that contain multiple CPUs at relatively high speed (16 physical cores, 2.9GHz each, and no GPU). So the decision cooks down to two options:

  • investing in similar machines with slightly higher clock speed (e.g., 3.2GHz) and the same number of cores (say 16), or alternatively...
  • stepping down on the clock speed (e.g., 2.6GHz) and going for a larger number of cores (say 20 or 24).

I am unsure if increased clock speed would pay off even in computationally intensive applications because I assume that the performance does not increase linearly with clock speed. Strictly speaking, I could simply approach the problem like this:

  • 3.2GHz * 16 cores = 51.2GHz, or alternatively...
  • 2.5GHz * 24 cores = 60.0GHz

However, I am pretty sure this calculation is flawed in a number of ways. But in what way exactly? Money is not really an issue in this paarticular case, and computation using GPUs must be ruled out, unfortunately.

The machines will run Windows Server 2012 R2 and will be used exclusively for this kind of calculations. All programs involved are optimized for 64bit, but occasionally 32bit software programs be involved as well. Memory and HDD should not be a huge factor to consider.

Cheers!

marked as duplicate by Ƭᴇcʜιᴇ007, Ramhound, magicandre1981, DavidPostill, Nifle Feb 7 '15 at 14:04

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • As in the dupe: it depends on the processes and how they utilize the system. So (IMO) there is no single answer to give you, or a simple calculation you can do to determine which is better. Benchmark and profile your code on multiple platforms/configurations and then buy whichever setup it runs best on. If you don't have the time to perform profiling, then get a setup with the most cores, running a the fastest speed that you can afford. – Ƭᴇcʜιᴇ007 Feb 4 '15 at 15:46
  • 1
    If the software only uses a single core then you want that single core to be fast as possible so that particular instance of the software completes its task as quickly as possible. Why are you multiplying the number of cores and the clock frequency. It doesn't work like that. You are indeed correct. The performance increase will not be linear but you can then identify the next bottlekneck. I personally would just use computationally software that was NOT single-threaded. – Ramhound Feb 4 '15 at 15:54
  • @Ramhound: I realize it doesn't work like that, but I am interested in how it works, that is, what alternating factors I have to take into account. Indeed the programs are single core, but we still run them in parallel. This is done using a "main" process that starts multiple "worker" instances of the same program. When the calculation is as CPU intensive as above, the performance actually multiplies with the number of cores on a given machine. However, this does not allow a conclusion as to what brings the larger gain in the scenario described above: clock speed or physical cores. – SimonG Feb 4 '15 at 16:09
  • 1
    There isn't enough information conclude what would be best. If you have 5 tasks, and each task takes 1 hour to complete on a single core processor running at 3 Ghz then you could complete 5 tasks in one hour if that processor had 5 cores running at 3 Ghz. If you want the best performance then maximize the number of cores AND frequency that performance WILL be linear. – Ramhound Feb 4 '15 at 16:31
  • @SimonG, All answers in this topic (and linked topics) are largely incorrect. You need to buy computers with biggest on-chip cache available, see superuser.com/questions/543702/… – Ale..chenski Nov 5 '16 at 5:48
1

The calculations are not precise. They are from mathematical point of view, but in computing you actually need to multiply by 0.9 to 0.75 to get the real "power" And more cores/processors mean lower number. This happen because of computer power you need to parallelize the tasks and them to build the final result from different threads.

  • 1
    This remark already helps my purpose. However, I think in the given scenario, the effort it takes to parallelize the process is rather small because the computations take quite some time such that the communication between the main and the worker processes happens not too frequently. – SimonG Feb 4 '15 at 16:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.