High Performance Computing

Tips for More Efficient Use of System

These tips not only serve to aid you but also demonstrate how to be more considerate to other users on the system. This is a large, shared facility and consideration must be shown to the other users at all times.

Do,

  • write toy programs that simulate new code you would like to write/add on to existing code. This is possibly one of the most important things to do in this list of tips
  • check your jobs regularly: some may have died and are just idling wasting CPU time that someone else might like
  • use the optimised pathscale and pgi compilers over the gnu compilers
  • try to compile your code with both pathscale and pgi compilers and run both versions to compare execution times and accuracy of results. If one compiles and the other does not try to establish why.
  • use the optimised numerical libraries
  • consider ways to parallelise your code
Do not,
  • be a memory hog!: try to establish as quickly as possible how much memory you think you will need. For example, user A is happily running a job on a slave node. User B submits a job which automatically wants to run on the same node as User A but user B wants 2GB of memory. This will immediately start to swap memory and will adversely affect the execution- time of user A's job.
  • run jobs interactively on the head nodes. The same adverse affect might apply as above, or if you run it longer than a second or so the load will increase steadily. This will affect other people trying to type on the command line or those who wish to log in.
  • install your own software. Consult your clone administrator if there is something you would like installed.
  • compile your code with optimisations until you have verified it works without any optimisation to begin with. Optimisations can be very aggressive and what may look like works with -O3 may infact fail with -O0
  • see code running as something that has to be suffered and rushed through just to get an answer. This is your numerical laboratory. Take the amount of time and care in getting to know the tools in this lab as you would in any other. Take a pride in how you write and document your code, and investigate more elegant ways to speed up execution time.