High Performance Computing
The DCSR team is able to help you regarding high performance computing topics including:
- using DCSR clusters when you're not able to perform your research and run computations on your local computer.
- harnessing the DCSR clusters (CPU and GPU)
- scaling your codes to larger clusters like CSCS
Here are the people involved in HPC topics:
- Ewan Roche - HPC system management, HPC software stack, code optimisation
- Cristian Ruiz - HPC programming, code optimisation
- Emmanuel Jeanvoine - HPC programming (CPU and GPU), code optimisation
Here are some topics on which we can help.
Using the clusters efficiently
The cluster are shared resources. In order to allow all users to get a fair access to the computing resources, the job scheduler has been configured so that excesses are avoided. However this does not prevent you from inefficiently using the resources. Depending on your workload we can help you to minimise the execution time and use of the resources required and therefore to minimise the billing and allowing you to get your results faster. This is usually achieved by tuning the job scripts and the threading parameters of your applications. We can also provide you with some insight regarding the use of the different storage locations on the clusters which can have a large impact on how long your jobs run.
Scientific computing & choice of optimised libraries
If you have to develop your own codes, several rules and good practices should be adopted. Furthermore, instead of reinventing the wheel and reprogramming everything from scratch, it's very likely than optimised and maintained libraries exist for many problems you will face. We can help you to choose the most commonly used optimised libraries and possibly to benchmark various libraries operating on the same topics according to your needs.
Profiling & code optimisation
Once you have developed a code, we can help you to profile it in order to identify bottlenecks and to improve some parts of the code where most time is being spent. Optimisation can be achieved in several ways including using a different algorithm, improving memory access, improving storage access, using vectorisation.
Depending on your code, it could be possible to slightly modify the core computations so that it could be spread over several CPU cores or nodes. In some cases, it could also be possible and very interesting to port some parts of the code to GPU. Even if some languages like C/C++ or Fortran are more friendly to parallelisation, significant gains can also be obtained with Python, R, or even Julia codes.
Energy consumption is a major concern in our current world. We are currently working on providing you with mechanisms that allow them to correlate your computations with the associated energy consumption. That can help you to choose between several computing strategies, to define trade-off between precision and consumption, or even to put the global benefit of your research respecting to your environmental impact.
Terms of support
We distinguish two kinds of support:
- service mode: you submit a ticket to email@example.com (don't forget to start the subject with DCSR), we can help for few hours. The service is free.
- project mode: you have a more complex project that requires several days/weeks/months of work. The service is billed (see U1 costs in support column in the cost model)
Please send an email to firstname.lastname@example.org and put "DCSR HPC support request" in the subject.