Asynchronous evaluation in Mathematica
Quite often what happens is that you system will run out of memory and start to swap. And swapping will make the system die a slow death. On Linux here is what I do
alias m804='ulimit -v 3800000; /usr/local/bin/math8.0.4/mathematica'
The system then just gives the out of memory message and quits before it goes to swap. Otherwise behaves as usual.
I have next to zero experience with parallel computation in Mathematica, so this might not be the best way, but this is what I managed to dig up from the docs:
Launch a kernel:
In[1]:= LaunchKernels[1]
Out[1]= KernelObject[1, "local"]
Submit some long to finish job:
In[2]:= job =
ParallelSubmit[First@SingularValueList[RandomReal[1, {2000, 2000}]]]
Start job:
In[3]:= Parallel`Developer`QueueRun[]
Out[3]= True
Now the job is running in parallel in the background ...
... and we're free to do whatever we want in the main kernel. If I understand your question, this is what you needed. We can run Parallel`Developer`QueueRun[]
again to check which parallel evaluations have finished (the display of the evaluation object will dynamically update).
In[4]:= 1 + 1
Out[4]= 2
Wait until the evaluation finishes (if it hasn't yet) and collect the result:
In[5]:= WaitAll[job]
Out[5]= 1000.23