Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Given the exasperating RAM needs of my Mathematica program, I contemplated launching remote kernels to run my Mathematica script. This is a two part question:

Part 1

If I launch a remote kernel(s), is the need for RAM also distributed amongst all the remote computers?

Part 2

I keep getting an error message when I try to launch a remote kernel from the Mathematica GUI.

The kernel c20-0707-23 failed to connect to the front end. (Error = MLECONNECT). You should try running the kernel connection outside the front end.

I have located the Kernel Program correctly on the remote computer. When I try starting a kernel over ssh in a terminal window with:

ssh username@remote.computer /path/to/math

Or

ssh username@remote.computer /path/to/MathKernel

After I enter the password to log in to the remote computer, I see that a kernel has been launched.

However, the same doesn't occur with the front end.

Are there any easy to understand tutorials/examples on launching remote kernels, without needing the GUI as I'd like to run scripts? I tried reading, this, for instance and the only thing that it did was make me panic as it was greek. I also read this but it's not an entirely similar problem

Here's a sample script that I used to launch local kernels and execute a simple NDSolve command:

#!/usr/local/bin/MathematicaScript -script

CloseKernels[]
LaunchKernels[3]
Print["AbsoluteTiming reveals:" NDSolve[{y'[x] == y[x] Cos[x + y[x]],
     y[0] == 1}, y, {x, 0, 30}]; // AbsoluteTiming ]
CloseKernels[]

This question may help answer the other question I linked in the first line.

share|improve this question
add comment

2 Answers

up vote 1 down vote accepted

Sometimes, yes it is sometimes distributed. I can't say for sure when and why, but I have noticed cases where ParallelMap does not distribute all the memory, but ParallelTable does.

Basically, Mathematica is trying to make things easy. You don't always want to have to spell out each and every variable that you want available on a remote kernel, and so it does its best to figure out just what you need. There are lots of options in Mathematica 8.

If you're trying to "aggregate" memory on other nodes, then you have to be careful to create the large data on remote machines to avoid the network transfer of the contents of the master kernel to the other machines. (Please know that I have run into issues in the past, where there seemed to be a limit as to precisely how much memory could be allocated by a Remote Kernel itself. i.e. couldn't allocate a gigabyte, let alone 16 gigabytes that are found in machines today. I don't know if this is still a problem.)

share|improve this answer
    
Lucky you. It is rather unfortunate that I have access to, at best, 8GBs of memory and 10GBS of swap. Any free/cheap cluster/nodes out there that I could use with Mathematica? –  drN Oct 7 '12 at 4:33
    
"Cheap" is a subjective term, of course. Depends on how much money you have to spend. Also, don't forget that you need a Mathematica license for each machine. If you are lucky enough to have a Network License server, then you can try to point the cluster node mathpass files to it and it might just work. –  Eric Brown Oct 7 '12 at 4:37
    
"What fresh hell is this" said the man... I don't think I'd want to do that considering that this is the final push for my degree. Are there any examples that I could look at? –  drN Oct 7 '12 at 13:38
1  
Not sure what you are looking for. See DistributedContexts. It is an option of ParallelTable and friends. This won't help your original NDSolve problem because it is a problem that is not easily parallelized. But if you could solve it for one problem, then you might imagine sending different initial values to different nodes and having each of them run different NDSolves. a) Ask your advisor for $$$ for equipment/software b) pay yourself c) change software d) simplify model. Sorry, no free lunch :-( –  Eric Brown Oct 7 '12 at 15:43
    
I am working on option (d) right now. Making the model less stressful by changing fluid properties etc. –  drN Oct 7 '12 at 15:53
show 1 more comment

RE: part 2 This presentation and its associated files solved a very similar problem for me, trying to connect from home without a static ip address to a work computer with a static IP address:

http://library.wolfram.com/infocenter/Conferences/7250/ It's called "Remote Kernel Strategies"

Previously I had also been able to run the remote kernel in the command line through SSH but was getting the MLEConnect error. Make sure you follow all the instructions in the init file.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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