2
$\begingroup$

OK, I have a FORTRAN code which numerically integrates equations of motion for large data sets of initial conditions. I run this program in my PC and it requires about 1 day of computations per data set. So, I was wandering if there is any site with super-fast PCs (or better a grid of processors) in which I could upload the .exe and perform my calculations much faster.

Any suggestions?!

$\endgroup$
  • 1
    $\begingroup$ Hi @Vaggelis_Z and welcome to scicomp! There are many different ways to speed up code and it's unclear whether a "faster" grid of computers is a better choice for your application without knowing more details. Could you describe the equations you're integrating and the algorithm you're using? It is possible that you could acheive faster performance without necessarily using faster computers. Also, is your code serial or parallel? $\endgroup$ – Paul Jan 16 '14 at 18:39
  • $\begingroup$ @Paul My code is serial and basically it integrates equations of motion using a Bulrish-Stoer integrator. I am pretty sure that a faster CPU, or even better, many CPUs in parallel would need sugnificant less time for the same job. $\endgroup$ – Vaggelis_Z Jan 16 '14 at 18:48
  • $\begingroup$ You can certainly run your serial code for different data sets on different computers, but each data set will still take 1 day to complete. You may want to divide each data set to different processors and run simulations in parallel. This could significantly increase your "per data set" performance. Of course, it would take some additional coding on your part. $\endgroup$ – Paul Jan 16 '14 at 19:21
  • $\begingroup$ @Paul I think that the required time depends on the CPU. I use a dual core PC at 2.2GHz and it needs about 1 day. If I use an older PC (single core at 1.6GHz) it needs about 2 days. So, if I had a much faster CPU (with multi-processors) it would require way less than 1 day using still the serial version of the code. Am I right? $\endgroup$ – Vaggelis_Z Jan 16 '14 at 20:47
  • 4
    $\begingroup$ A faster processor will certainly result in faster performance. More processors, on the other hand, doesn't give you faster performance unless your code is explicitly written to use them. $\endgroup$ – Paul Jan 16 '14 at 21:20
4
$\begingroup$

I have the feeling you are confused about how parallel processors work. You state your serial code runs faster on your dual core machine than on another single core CPU. That has nothing to do with the fact that your CPU dual-core, but that it's clock rate is higher (and probably also performs more instructions per clock cycle). A dual-core 2.2 GHz CPU indeed doesn't sound like a state-of-the-art CPU, so you would gain some performance running on a more modern CPU (see http://www.cpubenchmark.net/singleThread.html for a single threaded benchmark). On top of that, if you want to process multiple datasets, a multi-core CPU does indeed give you some benefits. In fact, if you do that a lot you might even opt for a many-core CPU such as the AMD Opteron 6000 series (up to 16 cores), even though their single-threaded performance is lower.

If you have to process a lot of datasets, such an upgrade wont cut it. In this case you can try to get computing time on a computing grid [1], where you can use hundreds of cores simultaneously. Note that again, you will only benefit from this when processing a lot of different datasets. If on the other hand you have only a few very large datasets, you will see no benefit. In this case you'll have to work on dividing your problem to utilize multiple cores at the same time (parallelization e.g. using MPI.

[1] From my personal experience, most national computing centres run their grids on Linux/UNIX. Since you mention you have an .exe, you'll have to shop around a bit to find a Windows HPC or you'll have to port your program.

| cite | improve this answer | |
$\endgroup$
3
$\begingroup$

There are commercial services that do exactly this. See for example Amazon Web Services

If you're doing this as a research project, you may be able to get time at one of the many supercomputing centers. See for example the National Center for Supercomputing Applications

| cite | improve this answer | |
$\endgroup$
  • $\begingroup$ Yes, my computations are part of a research project. $\endgroup$ – Vaggelis_Z Jan 16 '14 at 18:40
  • $\begingroup$ Obviously a free service would be the best choice! Is National Center for Supercomputing Applications free of charge or commercial? $\endgroup$ – Vaggelis_Z Jan 16 '14 at 18:44
  • $\begingroup$ You apply for time on the NCSA machines with what is essentially a mini grant proposal. $\endgroup$ – Brian Borchers Jan 16 '14 at 18:45
  • 2
    $\begingroup$ I would recommend looking at the XSEDE program if you are in the US since it is the place to apply for hours for open science research in the US. NCSA is a member of XSEDE among others (like TACC where I work). As far as I know, NSCA does not take applications for usage of their systems from outside the University of Illinois except through the XSEDE program. So, if you're not at Illinois, you'll have to go through XSEDE. The same is true for TACC and UT Austin (to first order). $\endgroup$ – Bill Barth Jan 16 '14 at 19:11
  • $\begingroup$ Thanks Bill- its been years since I last applied for time at NCSA so I wasn't familiar with XSEDE. $\endgroup$ – Brian Borchers Jan 16 '14 at 21:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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