6
$\begingroup$

I am planning the purchase of a new computer for use with Mathematica Home Edition, which is limited, as far as I understand, to two simultaneous kernels. Can anyone recommend particular hardware?

$\endgroup$
  • $\begingroup$ Related: Best Mac for Mathematica and Which processor and graphics card to use for my Mathematica license $\endgroup$ – C. E. Apr 14 at 19:13
  • 1
    $\begingroup$ Common recommendations are to get a lot of RAM and SSD. $\endgroup$ – C. E. Apr 14 at 19:15
  • $\begingroup$ I agree with comment above! RAM and drive size is a definite consideration issue. I recently purchased a new MacBook Pro 15" with 16 MB RAM and 1 TB SSD. I regularly perform analysis on time based data files that are hundreds of mega bytes in size. This MacBook Pro is better than my work desktop system. The biggest issue for me is RAM. I need to get a lot data in memory where I can perform the Mathematica operations. I say go with as much RAM, drive, and processor as your wallet will allow. Mathematica runs great on MacOS. $\endgroup$ – Joseph Apr 14 at 19:35
12
$\begingroup$

It is right, you can run only two Mathematica kernels at once in the Home Edition. But whether this is an actual limitation (and whether you should prefer a CPU with high single-core throughput) depends on what you are about to do with Mathematica.

I can only speak for my personal scope of application which is numerics. Here I seldomly find the Parallel-framework helpful, as Compiled code with options RuntimeAttributes -> {Listable} and Parallelization -> True usually scales much better than Parallel and friends. Such parallelized code is sped up by Intel MKL (and OpenMP?) outside of the Mathematica kernel. Even better is to use vectorized code for linear algebra; such is accelerated also by Intel MKL and such low level libraries as BLAS. The hardware ressources used are also independent of the number of Mathematica kernels. So, for numerical computations, you may enjoy mostly all the benefits of a fat multi core CPU, even with the Home Edition.

Things might be different for vast symbolic computations, though, or when you are forced to run slow built-in functions that are not parallelized themselves and that you cannot reimplement yourselves more efficiently.

If you are interested in neural network facilities, you might prefer NVidia graphics cards over those by AMD since only CUDA, not OpenCL is supported. Anyways, most algorithms in Mathematica are not optimized for GPUs, so apart from the very localized application of neural networks, also the particular choice of GPU does not matter much.

In think the only general advice that one can give is: Having lots of memory is always a good idea and does not harm in any case. Apart from that, I doubt that it is a good idea to build your new machine depending on your Mathematica license.

Addendum

A propos Intel MKL: I really hate to say this (and it might cost me further downvotes), but as far as numerics in Mathematica are considered, one should keep in mind that Intel CPUs might be preferable over AMD CPUs just because Intel MKL is optimized for Intel hardware (and rumor has it that AMD processors are nerfed in MKL). I cannot quantify the difference in performance/price ratio, though; I just wanted to make you aware of that.

$\endgroup$
  • $\begingroup$ Might you elaborate on what make Mma's Parallel frameowrk "almost useless" in your view? $\endgroup$ – Alan Apr 14 at 15:09
  • $\begingroup$ I do use the parallel tools a lot. I would not call them useless at all. It is true that parallelizing tight inner loops will often not provide much speedup (sometimes it will though), but parallelization is quite useful for running a slow function many times (e.g. batch processing). $\endgroup$ – Szabolcs Apr 14 at 15:15
  • 1
    $\begingroup$ @Alan Okay, I admit, that was a bit opinionated. I rephrased the statement and also detailed out my argumentation. $\endgroup$ – Henrik Schumacher Apr 14 at 15:46
  • 1
    $\begingroup$ "I have the tendency not to use slow functions". What I meant was that a loop (Table, Map) is worth parallelizing if each iteration takes a noticeable time. In these cases, it can provide a significant speedup. If each iteration takes 10^-6 seconds, then it won't. If you have a big enough problem, then it will always take a while to run. People run highly optimized C programs for days on HPC clusters :-) $\endgroup$ – Szabolcs Apr 14 at 16:28
  • 2
    $\begingroup$ E.g. last time I needed to do some image processing. Just a PeronaMalikFilter will often take a noticeable amount of time. I had hundreds of images. Parallelization was a huge help. But only the outermost loop was parallelized (i.e. batch-process all images). $\endgroup$ – Szabolcs Apr 14 at 16:30

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.