Optimization tools for scientific applications
Parallel programming is required in many scientific areas for numerical simulations. Scientists appreciate some guide tools, as this technology implies a lot of intrinsic difficulties, coming from a wide range of parallel architectures and programming models.
Optimization tools are specially useful in order to benefit from the hardware and software capabilities: static analysis of programs, loop rewritings, automatic parallelization, storage or communication optimizations,..
We have studied tools we developed at ICPS (PEI, OPERA) in order to address actual scientific problems:
- optimization of programs for sparse data structures,
- optimisation of data dependencies to minimize communications,
- concurrent executions and data alignments.
These tools and technologies were illustrated to solve sparse matrix operations, matrix factorizations or fluid mechanics problems.