Message Boards Message Boards

0
|
6770 Views
|
6 Replies
|
4 Total Likes
View groups...
Share
Share this post:

how to decipher some Mathematica terminology regarding system performance

Posted 10 years ago

I've used Mathematica Home Edition for 3 years, but am now bumping into performance issues that seem processor-bound. I'm been considering Mathematica Starter or Mathematica Standard as possible solutions.

But I'm confused by the way Mathematica uses terms like Controlling Process, Computing Process, Computational Kernels, and Cores. These terms can be found in two locations. Definitions are available if you click on the highlighted question mark.

Mathematica for Industry & Individuals Mathematica Product Information (Portal)

Here's the crux of the question. I have a Lenovo ThinkPad W540 workstation, with 16G of memory in 2 sticks. There are 8 CPUs (Intel Core i7). Is an upgrade to Mathematica Starter or Standard likely to improve performance?

I'm retired and fall nicely in the Home license restrictions, and cannot actually afford either Starter or Standard, but I still would welcome replies that helped me better understand how Mathematica uses the 4 terms listed above.

Many thanks.

POSTED BY: Gary Lewis
6 Replies

In general I would not expect the Standard version to perform significantly better than the Home edition. But there may be certain types of computation for which it does do better. If you provide examples that you believe are slow as compared to expectations then it might be possible to say something more concrete.

As for the terminology you cite, it applies mostly to explicitly parallelized code e.g. using ParallelMap. There may also be numeric linear algebra routines that are sensitive to number of available cores, but I do not think they are affected by the Home vs. Standard distinction.

I should mention that this is a bit outside my expertise. Others may be able to give more definitive responses.

POSTED BY: Daniel Lichtblau

I simply do not know the answers regarding whether we, or others, have useful and recent benchmarks. The links below might be of some use but most, I think, are dated.

http://www.stats.uwo.ca/faculty/aim/epubs/benchmark/mathemat.htm

http://reference.wolfram.com/language/Benchmarking/ref/Benchmark.html

https://homepages.fhv.at/ku/karl/mma.html

http://www.scientificweb.de/mathstef3.html

If at all possible I would suggest posting as concise as possible a version of the slow code, either directly here or, if too large, in an attached notebook. That way you might get useful suggestions on speedup or at least diagnosis as to what might be the cause of the slowness. One thing I can say is that it might well be a problem for which parallelization is simply not a possibility, even at the linear algebra or related low level. But that does not imply there is no other hope for speed improvement, hence the suggestion that you try to post an example.

POSTED BY: Daniel Lichtblau

Is an upgrade to Mathematica Starter or Standard likely to improve performance?

No.

  1. The home/student/proffesional/... editions of Mathematica are basically equally powerful. There are versions of Mathematica with some extra features that could be used in some cases to make things run faster, but that doesn't apply here. The home edition is for use at home and the student edition are for current students, but they aren't dumbed down at all.

  2. A standard Mathematica license gives you 4 subkernels for each kernel (At least I don't believe this has changed. It was true a year ago). This means that if you run something using Parallelize like ParallelMap, the computation will be broken down into 4 subkernels. You'd probably then expect to see 4 cores being used. You can test this by creating some kind of parallel computation with ParallelTable/ParallelMap and see how many cores are being used. To have Parallelize split a computation between 8 cores requeries 8 subkernels for each kernel. You can purchase a license for Mathematica that will give you access to more subkernels. If you wanted to do this, I would contact Wolfram Technical Support and let them know that you want more subkernels for this reason. They can get you into contact with a sales person and explain in more detail.

  3. Not everything that runs in parallel or is threaded runs through this subkernel system. For example, Mathematica may use some standard libraries which are already threaded. This is the case, I believe, for some of the libraries it calls for numerical linear algebra for instance. Buying additional subkernels will help you if you have some explicitly parallel code that you've written in the Wolfram Language using Parallelize/ParallelMap/ParallelTable/.... .

  4. NDSolve is not a kind of computation that easily lends itself to parallelization. I would not expect to see Improved performance from it on a machine with more cores. That said, it might be possible to write parallelized code to solve your problem. In the meantime, I would suggest trying to improve the speed of your current code. There are a number of resources online which talk about common techniques that are used to improve code speed: http://blog.wolfram.com/2011/12/07/10-tips-for-writing-fast-mathematica-code/

POSTED BY: Sean Clarke

A CPU is the chip. Many modern chips have multiple "cores", which can act in many ways like separate cpus. Each core can run one Mathematica Kernel at a time.

NDSolve is "single-threaded", with one line of instructions. Thus, it can use only one core at a time. Making a numerical differential equation solver run part of a calculation in parallel is a very difficult task.

The operating system is moving the calculation around the cores to balance the workload. I don't know for sure what sort of wear and tear a core can have, but I use that as an analogy.

With all these cores, you could run more than one Mathematica at once (your license limit is probably two). If you are running the calculation many times with different parameters but not depending on the output from other runs, you could look into the parallel processing features of Mathematica to run multiple separate calculations. See
http://reference.wolfram.com/language/guide/ParallelComputing.html
http://reference.wolfram.com/language/ParallelTools/tutorial/Overview.html

POSTED BY: Bruce Miller
Posted 10 years ago

Daniel - Thanks for your reply. Let me ask the question in another way. Does Wolfram do benchmark studies of Mathematica across the 3 editions of Mathematica (Home, Starter, and Standard)? Even better, does Wolfram also do that across a representative sample of hardware?

Maybe the answers are proprietary. If so, please ignore.

I'm simply trying to diagnose what I believe is slow performance due to computation limitations. Here's an example. One recent project dealt with the synchronization of phase coupled oscillators (Kuramoto model). So lots of use of NDSolve, but a simple program. And even for a trial situation with small parameters (eg, number of oscillators, number of timesteps, and number of coupling strengths), the elapsed time is around 40 minutes. That seems excessive. System monitor shows 8 CPUs, with one pegged at 100% and the others near 0%, then a hand-off to another CPU, and so on.

POSTED BY: Gary Lewis
Posted 10 years ago

Daniel, Sean, and Bruce - Thanks to each of you for your detailed and helpful replies. I very much appreciate your help. You've provided me with enough leads and ideas to move forward. At least as far as I'm concerned, please consider this help request closed.

POSTED BY: Gary Lewis
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract