Debugging a code by submitting jobs to a supercomputer is an inefficient process. It goes something like this:
- Submit job and wait in queue
- Check for errors/change code
- (repeat endlessly until your code works)
Debugging in Real-Time:
There’s a better way to debug that doesn’t require waiting for the queue every time you want to check your code. On SLURM, you can debug in real-time like so:
- Request a debugging node and wait in queue
- Check for errors/change code continuously until code is fixed or node has timed out
Example (using Janus supercomputer at University of Colorado Boulder):
- Log into terminal (PuTTY, Cygwin, etc.)
- Navigate to directory where the file to be debugged is located using ‘cd’ command
- Load SLURM
- Enter ‘salloc’ command and choose your debugging QOS (quality of service). For Janus, this is called janus-debug. Enter time of use (1 hour is the max time allowed for janus-debug). Choose one node and the desired tasks per node (12 is the max on Janus).
- $salloc – -qos=janus-debug – -time=01:00:00 -N 1 – -ntasks-per-node=12
Wait in line for permission to use the node (you will have a high priority with a debugging QOS so it shouldn’t take long)
Once you are granted permission, the node is yours! Now you can debug to your hearts content (or until you run out of time).
I’m usually debugging shell scripts on Unix. If you want advice on that topic check out this link
. I prefer the ‘-x’ command (shown below) but there are many options available.
Debugging shell scripts in Unix using ‘-x’ command:
$bash -x mybashscript.bash
Hopefully this was helpful! Please feel free to edit/comment/improve as you see fit.
When looking for an equivalent WinSCP software for Mac, I bumped into Cyberduck, this an open-source application that supports SSH secure file transfer and it’s extremely easy to use. So, this post provides illustrated instructions to set Cyberduck with our “The Cube” cluster.
You can download the application from cyberduck download. Once the download is completed you can install it like any application, by dragging it into your applications folder. Once it has been installed, lounge it from there.
1) Click on the Open Connection button.
2) From the drop down menu select SFTP.
3) Provide the server name: thecube.cac.cornell.edu along with your username and password and click on the connect button.
In this post, I’ll talk about how to set up a virtual machine on a PC, in order to run outdated software that may have been optimized for a different version of Windows. For example, a collaborator of mine uses the EPA Water Treatment Plant model which only seems to work under 32-bit versions of the operating system.
In this blog post, I will introduce a new open source library called OpenMORDM. I will begin by defining MORDM (Multi-Objective Robust Decision Making), provide instructions for installing the software, and conclude with a case study.
What is MORDM?
Robust Decision Making (RDM) is an analytic framework developed by Robert Lempert and his collaborators at RAND Corporation that helps identify potential robust strategies for a particular problem, characterize the vulnerabilities of such strategies, and evaluate trade-offs among them [Lempert et al. (2006)]. Multiobjective Robust Decision Making (MORDM) is an extension of RDM to explicitly include the use of multiobjective optimization to discover robust strategies and explore the tradeoffs among multiple competing performance objectives [Kasprzyk et al. (2013)]. We encourage users to read these two articles to gain insight into these methods.
Lempert, R. J., D. G. Groves, S. W. Popper, and S. C. Bankes (2006). A General, Analytic Method for Generating Robust Strategies and Narrative Scenarios. Management Science, 52(4):514-528.
Kasprzyk, J. R., S. Nataraj, P. M. Reed, and R. J. Lempert (2013). Many objective robust decision making for complex environmental systems undergoing change. Environmental Modelling & Software, 42:55-71.