Main Page > SSD projects > SET Project
 

Assistance in supercomputer programming

Preface

Complex architecture of modern computers makes development of effective programs a hard task. It is known that an average programmer does not achieve 20% of peak performance of his computer even with the sequential programs. Parallel programs show much worse figures because of the difficulties which come from the interprocess communications.
The aim of the SET project is to provide help for application programmers in their attempts to reach the highest possible performance of parallel programs on target supercomputers.
Though the choice of the algorithm can influence the time of calculations tremendously, the project is focused on the technical aspects of implementation of algorithms for modern supercomputers. We consider application in the field of numerical simulations mainly.
When trying to increase the performance of application, the developer has to take into account general principles of effective programming and particular architecture features of target supercomputer. Also, it is important to make right choice of tools and ways of parallel programming, and pay attention to the characteristic properties of the system software.
Usually, an application programmer is not able to reveal bottlenecks of the target supercomputer, and does not know where the possibilities to increase performance are and how to use them to the best. This is because the task requires testing of supercomputer at different levels of its architecture and measuring of its properties. The most of the widely known test suites can be used to estimate performance of components of supercomputers (Flops, STREAM, NetTest, The Livermore loops, MPI tests, etc.) or determine a performance of particular applications (Linpack, SPEC, NPB…). This kind of test suits can help in estimating the computing power of supercomputer and to compare it to another one, but will not help to create an effective program.
In contrast to the existent test suites our system will allow the user to do the following:

  • Evaluate the computational power of supercomputers;
  • Estimate the influence of hardware and software components on the overall supercomputer performance;
  • Formulate recommendations for the effective programming of the numerical simulation problems for the specific supercomputer;

Objectives

  • Development of software for the evaluation of the supercomputer computational capabilities in the area of the numerical simulation;
  • Formation of the set of recommendations for application programmer on implementing effective programs for particular supercomputer;
The SET system should provide:
  1. The set of tests for the evaluation of features and parameters of supercomputer performance. Particularly:
    • A performance of supercomputer components, such as memory subsystem, executing units, communication network and so forth;
    • An ability of the supercomputer to perform the most frequently used computational operations (e.g. matrix-vector operations, Fourier fast transformation, etc.);
    • A supercomputer computational power shown on real problems from the area of the numerical simulation.
  2. The set of the end-user recommendations for the effective programming of the computational tasks that are supposed to be run on the supercomputer.
  3. A special program for assembling, storing and visualizing the results of the tests

State of the art

To this moment, the methodology of testing of microprocessor has been elaborated. The programs evaluating real features of the memory subsystem and executing units for three different architectures (x86, Opteron 244 and Alpha 21264) have been implemented. Also, the set of recommendations for the design of the sequentional programs has been formed.

Participants

Head of the project: Valentina Markova
Developers:
Alexei Aliev
Alexander Cherkasov
Maxim Gorodnichev
Sergey Kireev
Artyom Merkulov