We provide a range of high-performance computing consultancy services, including:
- Application porting, benchmarking and optimization.
- Full parallelization of sequential or shared-memory-parallel codes. The end-product parallel applications are fully portable and able to run on any cluster or distributed-memory system that supports industry-standards.
- Linux cluster/interconnect installation, configuration, management and trouble-shooting.
We work with industry-standard programming languages, in particular Fortran 90, OpenMP and MPI (Message-Passing Interface), so that your codes will compile easily and be optimally portable.
We realize that many application parallelisation projects are large and complex, and can best be accomplished as a collaboration between the original developer and the parallel programmer. In such cases we will partner with you to parallelize your flagship applications and provide other high-performance computing consultancy services. We can show you how to efficiently parallelize your code yourself, or we can do this for you. You will be able to clearly see what we do every step of the way so that you can continue to recognize and develop your own code just as you are used to doing now.
These two diagrams from Intel's Trace Analyzer show the communication patterns between
processes in two different parallel models. The complex pattern - where every process
communicates with every other - is very inefficient, and scales poorly. The simple pattern
- where each process communicates only with neighbouring ones - is very efficient and