Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Is it possible to use RAM from other computers to assist with Mathematica Light Grid Server 7 parallel computing? If so, how?

share|improve this question
    
what are you exactly trying to do? Usually using directly RAM on other computers is pointless due to latency, but you could make a distributed application which would get its own share of the load. I haven't used Mathematica Light Grid Server 7, so I can't comment if it's a usable solution. –  AndrejaKo Dec 22 '11 at 23:41
    
How to do this - you could make a distributed application which would get its own share of the load –  Pipe Dec 23 '11 at 22:51

1 Answer 1

Mathematica implements parallel computing by using several kernels (several processes) that may even run on different machines. There is one main kernel which you interact with directly, and several subkernels (controlled by the main kernel) that do the work.

So, in short: you cannot have direct access to the memory of the other machines, but you can fully exploit it by running a subkernel on each machine.

You did not mention the specific problem you are trying to solve, but if you need to process a large dataset that does not fit into the memory of one machine in parallel, you can do this:

  1. First, split the data into manageable chunks.
  2. Have each of the subkernels load a chunk, and process it, obtaining a result that does not take up a lot of memory.

    There are several ways to control the subkernels from totally manual to totally automatic. ParallelEvaluate[] will give you fine grained control over each kernel. You can also use the $KernelID$ variable to decide which part of the dataset should be loaded into each kernel. Please see the documentation for details.

  3. Finally the results will either get collected into the main kernel (if the result doesn't take up much memory), or will be written out to disk from each subkernel (if the result is just as big as the input data)

One important point: to explicitly prevent some variables from being automatically shared between kernels (and taking up valuable memory), you need to put them into a separate context, as described here and the links therein.

share|improve this answer

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.