We don’t allow questions seeking recommendations for 开发者_JS百科books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this questionI'm a regular user of Matlab. For a very CPU-intensive task, I need to keep my PC running for hours (or days) simulating stuff, which is a pain since I need to carry it around.
Do you know of a public website/company that allows a user to run a remote instance for as long as he wants to, and then charge the corresponding fee? I don't care where it is done, or how many cores are used or anything, I just want to run some .m files and then retrieve the output variables.
I don't think it is too difficult to implement but I just cannot find (I've googled a lot) someone to sell me this service. I know some universities have servers for this, but they are private.
Any help on this will be much appreciated.
Thanks, Germán
You can try to get an account with MATLAB on the Teragrid, operated jointly by Cornell university and Purdue university. It is an NSF funded project and provides access to researchers (both academic and industrial) for free. You just need to fill out a request form and you should get an account setup in a day or two.
I have used the Teragrid for my projects and I am entirely satisfied with it. They have a good infrastructure with 64 servers w/ 8 cores each, for a total of 512 cores of processing power and 16 GB of RAM/server.
However, do note that you will have to change your workflow drastically and switch to writing distributed jobs instead of parallel (or serial jobs), which can be a pain in the initial days (if you're not used to it). They do have helpful resources for that.
Also important when working with shared resources is the concept of "wall time", which also directly relates to how long your job stays in the queue. Wall time is basically how long a single task takes to run. In order to set a sufficient wall time, you must be intricately familiar with your code's complexity (number of operations, etc) so that you don't under estimate the time required (tasks are terminated if they exceed wall time!). On the other hand, you don't want to be too lax and choose a high wall time, because then your job will stay longer in the queue. In other words, you can't just set a wall time of 7 days just to be safe, because the scheduler will make you wait till a resource can be freed for 7 days (once you access a core, it's yours and yours only), which is close to never.
As I mentioned in the comment, cloud computing seems to be what you are looking for.
In addition to the paper I already linked to, I came by another solution that doesn't involve buying additional licenses for installing MATLAB on the cloud.
Instead it compiles your program into a standalone executable (this requires the MATLAB Compiler on your existing platform). This executable along with the freely available MCR runtime are the only things transferred to the cloud.
To be exact, the author is using sockets to build a server that sits in the cloud listening for connections. This is the part that is compiled into an executable, with only the MCR as dependency. It takes the input, EVAL
-uates it, and sends back the results when done.
The client side (MATLAB script on your side), connects to the server, and sends it commands to be run along with serialized data needed. This is inherently scalable as you can run servers on as many instances as you want (as many as you can afford really), and simply dividing the work among them. Obviously it requires a little bit of work to rewrite your program into breakable tasks.
I think this is really what the MATLAB Distributed Computing solution is doing but with all the gory details abstracted away... Check it out to see if it fits your needs: Using Amazon EC2 to speed up matlab optimisation
精彩评论