MIRIAD is a set of unix programs that read and write files. Sometimes these files can be very large and occupy large amounts of memory. For some problems this will not fit in memory and program can cause the system to swap. Task like top are useful to see if your task is spending 100% on the cpu, or perhaps swapping or spending time on I/O.
For those using MIRIAD in a networked environment, you should make sure no significant I/O takes place to NFS or other slow devices.
Some programs that use scratch I/O the $TMPDIR environment variable can be abused to let MIRIAD using a faster device (.e.g /dev/shm is sometimes mapped to section of memory). The invert task is one example where you might benefit. Remember each channel in a visibility takes up 8 bytes in the scratch file, e.g.
setenv TMPDIR /dev/shm invert vis=.. beam=.. map=.. ... unsetenv TMPDIR
Sometimes there are surprising improvements to be gained when switching to a better compiler. Certainly the intel compiler had a lot (20-30% was not uncommon, with some programs 50%) to gain over the GNU compiler, with more recent 4.2 and 4.3 versions have closed that gap. On some CPU's a special extra compiler flag can help as well.
MPI / OpenMP / GPU
Some work has been done on this, but nothing official in CVS.