How to use a supercomputer

37 views (last 30 days)
Maz
Maz on 18 Mar 2013
Hi there,
I'm working on a code which has several loops. I need to run this code for very small increments, however, when I estimated the time for this, it gave me roughly 512 days. This has been done on my computer which has only 2 cores. I have now access to a 64 and higher core supercomputer. But when I use parallel computing using parfor and matlabpool, I cannot open more than 8 cores. It doesn't really change a lot the simulations' time. I was wondering if anyone can help me use up all the 64 or higher cores for my program. Please let me know if there is anyway to activate all the possible cores to run my program in a parallel manner.
Thank you,

Answers (6)

Walter Roberson
Walter Roberson on 18 Mar 2013
A later version of MATLAB would permit 12 cores.
Beyond that you need to use the Distributed Computing Toolbox.
  1 Comment
Jan
Jan on 19 Mar 2013
Maz has written:
Thanks Walter. If I have this toolbox installed, do you think I would be able to activate all the cores on the sever using the same command (matlabpool)? Or I should do it in another way which I'm not aware of!
[Please post comments in the comment section, and not as answer - Thanks!]

Sign in to comment.


Jan
Jan on 19 Mar 2013
Edited: Jan on 19 Mar 2013
I suggest to post the relevant part of the code at first. When increasing the number of cores from 2 to 8 does not decrease the runtime significantly, expanding to 64 cores will not help much more. But I haven't seen a code, which could not profit from the massive knowhow of the forum members. While improvements of the code can increase the program by a factor of 1000, 64 cores can be 32 times faster only in the absolute not realistic best case.

Maz
Maz on 19 Mar 2013
Edited: Maz on 19 Mar 2013
The code just computes some recursive relations, it is not fancy, but it has several for loops, something like this:
for alpha=1...
for beta=1...
for gamma=1...
for delta=1...
. . .
x(n+1)=f1(x(n),y(n),z(n),t(n));
y(n+1)=f2(x(n),y(n),z(n),t(n));
z(n+1)=f3(x(n),y(n),z(n),t(n));
t(n+1)=f4(x(n),y(n),z(n),t(n));
. . .
end
end
end
end
That's clear the complexity is really high. Apart from the two innermost loops, the remaining for-loops can be calculated using parallel computations.

Maz
Maz on 9 Apr 2013
It seems there is Distributed Computing Toolbox 6.1 installed on the server, but I don't know how to use, can anyone help me regarding this issue?
  1 Comment
Jason Ross
Jason Ross on 9 Apr 2013
I'm assuming there is an administrator who set this up, you can probably get the fastest response from them as to how things are set up and how to submit jobs.

Sign in to comment.


Maz
Maz on 11 Apr 2013
Edited: Maz on 11 Apr 2013
yes I asked them, they told they installed it but they don't know how it works!

Jason Ross
Jason Ross on 12 Apr 2013
Basic outline of how to connect to a MDCS server using PCT:
  • If you have a recent enough MATLAB, use "Discover Clusters" under the Parallel Menu and see if your cluster shows up. Validate the profile when prompted to do so to make sure the cluster is indeed configured correctly.
  • Ask your admin staff if they have a cluster profile they used to validate that the cluster was working properly. They should be able to save/export it and then you can import it.
  • If you don't have Discover Clusters, make a new MDCS profile using the Profile Manager, filling in the required blanks and then validating it at the end.
When the cluster validates, you should be good to go. The easiest way to try out your code on the cluster is to set your profile as the default and just run your m-code. If you've got it working with the local profile already, it's highly likely that it will "just work" on the cluster. The only thing you may need to do is add file or folder dependencies in the cluster profile if you have external dependencies you need on the cluster.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!