1
$\begingroup$

I need to compare two computers and decide which one I want. My goal is to run faster simulations. The current run time is 3.5 hours and I would like to reduce that as much as possible. The code I am running has the capability of running on multiple processors (parallel).

Which specifications of the pc should I pay attention to?

The RAM? number of processors? What else? and what are the most important ones?

Thanks

$\endgroup$
  • $\begingroup$ For targetted advice, more details about the application would be highly advantageous. Is the application I/O-bound, memory-bound, or compute-bound? Assuming the last: Is the code SIMD-vectorized? Does it use intra-node parallelism, e.g. OpenMP? Does it use inter-node parallelism, e.g. MPI? Is there a version that can make use of an accelerator, such as a GPU (e.g. via CUDA)? $\endgroup$ – njuffa Sep 16 '16 at 16:04
  • $\begingroup$ If, as you write, you need to compare two computers why don't you simply benchmark your code on each of them and pick the one that performs better ? It's all very well comparing cache sizes and numbers of cores and memory bus bandwidth and all that but the numbers you gather won't answer the only important question. $\endgroup$ – High Performance Mark Sep 16 '16 at 17:34
  • $\begingroup$ That is great advice if one can actually get a hold of the two machines in question, or get the system vendor to run the relevant app(s) on the customer's behalf. Here it sounds more like a case of sitting in front of system vendors' online configuration tools and trying to pick the best (fastest) configuration that fits the set budget. Without knowing the app's profile, it's impossible to decide whether one should configure (for example) with an SSD instead of a HD, increase the amount of system memory, use a higher frequency CPU, a CPU with more cores but lower frequency, or GPU accelerator. $\endgroup$ – njuffa Sep 16 '16 at 21:53
2
$\begingroup$

Optimisation always depends on the code's profile. You should run the application through an appropriate profiling tool to see where the bottlenecks are - it will typically be :

  • I/O-bound (spends time writing to disk) - probably not your case.
  • CPU-bound (spends time in CPU operations) which can be both dependent on data throughput or calculation time.

If your data structures and processing strategy is such that the application cannot load the data into RAM all at once, you will suffer. If the computational techniques rely on moving large amounts of data in and out of the memory, you will run into caching issues.

In a perfect world, you would break the computation into as many independent tasks as possible and send them to as many processing units at once as you can - however, you need to make a trade-off in the real world.

$\endgroup$
  • 3
    $\begingroup$ Given that computational throughput (e.g. FLOPS) has increased much faster than memory throughput (GB/s) in the past decade, many HPC applications are in fact memory-bound, rather than compute-bound, so it would make sense to clearly distinguish between those two classes in an enumeration. $\endgroup$ – njuffa Sep 16 '16 at 15:58
1
$\begingroup$

If you want your PC to perform numerical simulations, the processor is clearly the first component you should paid attention to. For this kind of application, Intel i7 and Intel Xeon are often used in desktop PC, no advertising intended.

Of course the frequency of the processor is important but look carefully at the specifications of the L1/L2/L3 caches, especially the size of the cache. A large cache is interesting (and expensive). That is an important information since the cache is a very low latency memory access widely used by the processor that can be used for specific optimizations (called cache optimizations). You should go to specific websites for detailed information, mainly Intel or AMD website's, especially for the ability of the processor to perform specific floating-point arithmetic operations, vectorization, hardware acceleration etc... It is very difficult to say that a processor is faster than another. However, you can have an idea of the overall performance of a CPU by looking at benchmark tests here

For running in parallel, the important is the number of cores. The core is really the component that perform the calculation. For a desktop PC, you could have 1 processor with 8 cores or 2 processors with 4 cores each, I can't explain you the difference. You should also paid attention to the ability of the hyper-threading which can in certain circumstances virtually doubles the number of cores. Remember however that running a code on 16 cores is not always faster than running on 8 cores, it strongly depends on the scalability of your code and the quality of your parallelization.

About the RAM, it strongly depends on how much data your code needs to store. Besides, don't forget that you should be able to post-process your data and visualization software often require huge amount of RAM. 16Go is a good start for scientific applications but that is very subjective. You may need a decent graphic cards for real-time or high quality rendering.

Of course around all of this, a decent motherboard with high-speed transfer and a (big) "fast read/write" hard-drive are required.

$\endgroup$
  • $\begingroup$ Thanks for your comments. So I checked the components that you mentioned: the PC number 1 has these specifications: Intel i7 7930k CPU@3.40GHz , RAM: 32.0 GB, number of processors: 12. The PC number 2 has these specifications: Intel i7 4930K CPU @3.40GHz , RAM: 28GB , I don't know the number of processors for this pc. Where should I check the specifications for L1/L2/L3 caches? $\endgroup$ – Mary Jane Sep 16 '16 at 1:20
  • $\begingroup$ I answered your question about the context of numerical computations and why you will need a good processor. However, for specific hardware specification, it may be wise to ask your question at hardwarerecs.stackexchange.com instead. $\endgroup$ – Coriolis Sep 16 '16 at 6:24
  • 1
    $\begingroup$ I suspect your PC number 1 does not have 12 processors. My guess is that it has 1 processor with 12 cores. Perhaps 2 processors with 6 cores each. $\endgroup$ – Mark L. Stone Sep 16 '16 at 20:16
  • $\begingroup$ I don't see any 7930K CPU in Intel's catalog- as I understand it, the high performance versions of the seventh generation core i3-i5-i7 processors will have 7000 series model numbers but haven't been released yet. The 4930K is an older model CPU on its way out- you might be much better off with a new generation CPU. $\endgroup$ – Brian Borchers Sep 17 '16 at 3:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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