Internships at CSCS – the Swiss National Supercomputing Centre 2024
The Swiss National Supercomputing Centre (CSCS) develops and operates cutting-edge, high-performance computing (HPC) systems as an essential service facility for science. The centre enables world-class research through its scientific user lab, which is available to domestic and international researchers in academia, industry, and the business sector. The centre is operated by ETH Zurich and has offices in Lugano (headquarters) and Zurich.
Project background
Below you can find 5 described internship topics. Please kindly read carefully and then decide which 2 topics appeal the most to you.
Job description
1) Testing and Validation of HPC Systems using ReFrame
We are seeking a highly motivated and talented intern to join our team and assist in the testing and validation of our HPC systems and software environments using ReFrame. This internship offers an excellent opportunity to gain hands-on experience in HPC system testing, benchmarking, and quality assurance, contributing to the success of our research computing initiatives. ReFrame is a versatile framework for testing and benchmarking HPC systems and applications. It plays a crucial role in ensuring the reliability and performance of different environments by providing a unified platform for creating, running, and validating tests across architectures and systems. It helps ensure that researchers can efficiently run their simulations and computations on HPC resources. Furthermore, it can be used to manage the release of system updates and software changes systematically. This ensures that updates are thoroughly tested before being deployed to production systems.
Join us in advancing the frontier of High-Performance Computing and make a meaningful impact on the world of scientific research! Apply today to embark on an exciting journey in HPC system testing and validation using ReFrame.
During the internship, you will be able to
- Collaborate with our team to develop, execute, and maintain performance tests and benchmarks using ReFrame.
- Create and implement test cases to validate the functionality and reliability of HPC hardware and software components.
- Assist in optimizing and automating the testing process (including CI/CD pipelines) to ensure efficient and consistent validation
- Work on testing portable software environments.
- Collaborate with researchers and system administrators to gather testing requirements and address specific performance issues.
- Contribute to the development of best practices and documentation related to HPC system testing using ReFrame.
2) Distributed in-situ and in-transit data transformation and visualization in Julia
Julia is a programming language that was designed to solve the “two-language problem”, the problem that prototypes written in an interactive high-level language like MATLAB, R or Python need to be partly or fully rewritten in lower-level languages like C, C++ or Fortran when a high-performance production code is required. Julia, which has its origins at MIT, can however reach the performance of C, C++ or Fortran despite being high-level and interactive. This is possible thanks to Julia’s just-ahead-of-time compilation. Julia was shown to be suitable for scientific GPU supercomputing at large scale, enabling nearly ideal scaling on thousands of GPUs on Piz Daint.
High Performance Computing (HPC) at large scale requires well-designed workflows for data transformation, analysis and visualization. The ability to perform these tasks in a distributed, parallel fashion are key to most of these workflows. In addition, in-situ or in-transit data processing can be a great plus given the massive amount of data scientific HPC simulations produce. Workflows for data transformation and visualization at large scale are in active development in the language Julia which is increasingly used in HPC. The overall aim of this internship project is to design new workflows by combining the usage of existing packages and tools. Furthermore, a concrete objective is the development of a Julia package that simplifies the workflow(s) evaluated best, building on earlier work on distributed data staging conducted at the Swiss National Supercomputing Centre. The intern will have the chance to apply modern software development practices (version control, Continuous Integration and Continuous Delivery, automated build of documentation, …) in the user-friendly Julia environment.
3) Domain specific language for weather and climate applications in Julia
In our group we develop and maintain a set of libraries for weather and climate applications. One of the tools is a Python framework with an (embedded) domain specific language (DSL) for weather and climate scientists to express their algorithms in a high-level language which is then compiled to optimized versions for different hardware architectures by generating efficient code in C++, CUDA or other languages (GT4Py toolchain). Python is currently the language of choice for domain scientists. However, Julia is getting traction in the scientific community and could be the next language for scientific computing.
Project goals
In a previous internship we have developed an initial Julia based version our DSL integrating with our existing Python toolchain. We are looking for a motivated individual to intern with us and expand on that effort. The direction of the internship can be set based on the kills and interest of the candidate. The intern will work on (small) subset of the following objectives:
Features expansion:
- Implement a Julia based GPU backend for Nvidia and/or AMD GPUs (using Cuda.jl, AMD.jl).
- Enhance the Julia CPU backend to support variable memory layouts.
Performance & Optimization:
- Develop a benchmark suite representative of common computational patterns in weather and climate codes.
- Execute the benchmark suite on CSCS supercomputers and identify potential performance bottlenecks.
Python to Julia transpiler:
- Implement a transpiler from FOAST or the internal representation in GT4Py (ITIR) to the Julia DSL to enable easy transition from the Python DSL to the Julia DSL.
- Apply the transpiler to an existing code, for example the test suite of GT4Py or an actual weather model, and validate the results.
4) Automating Spack Package Generation for Python Packages
Spack is an open-source package management tool designed for supercomputing and high-performance computing (HPC) environments. It simplifies the installation and management of software and dependencies, allowing users to build and customize software stacks for their specific computing needs. A Spack package contains a set of instructions and metadata that define the dependencies and how to build and install a specific software package or library. Although Python packages already include the essential dependency metadata, Spack does not currently utilize this information, resulting in a manual and error-prone process when creating Spack packages from them. This challenge is further aggrevated when dealing with transitive dependencies that also lack their Spack counterpart.
Project Goals
We are looking for a motivated individual to intern with us and contribute to Spack’s development by extending its capabilities to automatically generate Spack packages for Python dependencies. The intern will work on the following objectives:
- Develop a Python Tool: Create a Python tool that can extract dependency metadata from Python packages and use it to generate Spack package recipes.
- Handle Direct and Transitive Dependencies: Extend the tool’s functionality to generate Spack package recipes for both direct and transitive dependencies of a Python package.
- Version Flexibility: Enhance the tool to generate a single Spack recipe from multiple versions of a Python package, offering users and Spack’s concretizer the flexibility to choose the most suitable package version.
- Integration with Spack: Integrate the developed tool into the Spack codebase and extend the ‘spack create’ command to utilize this tool for generating Spack package recipes.
Qualifications and Skills
- Good Python programming.
- Basic knowledge of package management concepts and Python packaging.
- Familiarity with Spack and HPC environments is a plus but not mandatory.
5) Integrating Cloud Development Environments with HPC Resources
Cloud development environments such as Gitpod and GitHub Codespaces have gained traction in recent years for their ability to provide isolated, reproducible workspaces, facilitating a quicker setup and onboarding process for developers. However, their application to High-Performance Computing (HPC) tasks is limited due to the inability to customize the hardware on which these environments run. This limitation makes them less suitable for developing GPU applications or evaluating application performance on specific hardware configurations.
At the Swiss National Supercomputing Centre (CSCS), many HPC users and developers continue to rely on traditional tools like ssh, slurm, and vim, occasionally complemented by Visual Studio Code’s remote development features. However, this established setup does not take full advantage of the streamlined workflows and enhanced efficiency that modern cloud-based Integrated Development Environments (IDEs) can offer.
This internship focuses on integrating Cloud IDEs with the existing HPC resources at CSCS, aiming to extend their advantages and efficiencies to both our internal and external user base. The project may commence with a solution based on the openvscode server, integrated via Firecrest. The subsequent phase could involve evaluating Kubernetes-based solutions like Eclipse Che or Coder, or alternatively, developing a customized solution that integrates with tools from the CSCS CI/CD platform and/or jupyter.cscs.ch.
Your profile
For the above positions students must be enrolled in a Swiss University (Bachelor/Master level) and for Third Country nationals the internship must be a mandatory part of their university curriculum. The student must be attending the university in person (not on-line) and must be living in Switzerland. In addition the Masters cannot be already concluded.
The candidate must be a student in one of the following fields: Computer Science, Mathematics, Physics or related fields. Ph.D. students will not be considered
The ideal candidate is a team player and feels comfortable working in an international environment in the heart of Lugano, Canton of Ticino or in Zürich in Switzerland. Excellent command of written and spoken English (our official working language) is a must.
Additional rules for Third Country Nationals: For 3rd Country Nationals the internship must be a mandatory internship and it must be start during the semester. However, it can flow into the semester holidays.
We offer
CSCS values autonomy, ownership, and continuous learning. Students can gain specialised hands-on experience through various challenging activities typical of the HPC field.
- ETH Zurich is a family-friendly employer with excellent and flexible working conditions.
- You can look forward to an exciting working environment, cultural diversity, and attractive offers and benefits.
- We value the diversity of our team, and to further enhance our workforce’s diversity, we encourage women to apply.
- We offer internships of 2-6 months. During this period the intern will be mentored by and collaborating with HPC experts in the centre. A salary of 2’500.00 CHF/month is granted.
Your profile
For the above positions students must be enrolled in a Swiss University (Bachelor/Master level) and for Third Country nationals the internship must be a mandatory part of their university curriculum. The student must be attending the university in person (not on-line) and must be living in Switzerland. In addition the Masters cannot be already concluded.
The candidate must be a student in one of the following fields: Computer Science, Mathematics, Physics or related fields. Ph.D. students will not be considered
The ideal candidate is a team player and feels comfortable working in an international environment in the heart of Lugano, Canton of Ticino or in Zürich in Switzerland. Excellent command of written and spoken English (our official working language) is a must.
Additional rules for Third Country Nationals: For 3rd Country Nationals the internship must be a mandatory internship and it must be start during the semester. However, it can flow into the semester holidays.
Your workplace
We offer
CSCS values autonomy, ownership, and continuous learning. Students can gain specialised hands-on experience through various challenging activities typical of the HPC field.
- ETH Zurich is a family-friendly employer with excellent and flexible working conditions.
- You can look forward to an exciting working environment, cultural diversity, and attractive offers and benefits.
- We value the diversity of our team, and to further enhance our workforce’s diversity, we encourage women to apply.
- We offer internships of 2-6 months. During this period the intern will be mentored by and collaborating with HPC experts in the centre. A salary of 2’500.00 CHF/month is granted.
We value diversity
Curious? So are we.
We look forward to receiving your complete online application, which we ask you to refer to Stephanie Frequente, HR Partner.
Please specify in your application explicitly a maximum of 2 topics which fit your interests.
As there is a high demand for the internships in certain periods and we can only offer 2 internships per quarter, kindly also state your availability (prefered time frame for the internship).
Please note that we exclusively accept applications submitted through our online application portal. Applications via email or postal services will not be considered.
For further information, please visit our website.