Adastra user documentation
Warning
TO READ BEFORE CONTINUING: Know that the documentation is always a work in progress and it may be slightly behind, or slight in advance of the current state of the machine. Do not forget to check the Known issues. No LLM is involved in the creation of this documentation (except for the virtual assistant).
Note
The CINES High Performance Computing (HPC) support team remains open and available for support. Users should follow normal support procedures when reporting issues or requesting help. Consider the guidelines for Contacting CINES.
Ask for help by opening a ticket using one of the two following options:
Emailing us at svp@cines.fr;
Using this GUI.
Note
The documentation is meant to be complete. If you find it too long, rely on the virtual assistant and ask it to summarize it for you. Also, you can use the search bar on your left.
The manual can be seen as the external specification of the product, it should describe in great detail what the user sees, and as such, it is the main product of CINES. The style must be precise, complete and accurately detailed. The definition must repeat the essentials yet all definitions must agree. This tend to make manual dull reading but precision is more important than liveliness. “The ideas are those of about ten men, but the casting of those decisions into prose specifications must be done by only one or two, if the consistency of prose and product is to be maintained” (from The Mythical Man-Month by Fred Brooks).
This document is intended as a reference for the CINES’ computing community: les Chercheurs CalCulant au Cines (C4). However, we are still far from the level of completion mentioned above. We welcome comments on missing information, technical and typographical errors, etc..
Some explicit requirements to follow this documentation is a basic understanding of the Unix-like shell, of the Bash implementation and of the environment variable concept; you may find learning material here.
A big problem with much documentation is that you often need to know the content before, so you can make sense of it when read. It’s a very good aide-mémoire, but if you don’t know what you’re doing or what you are looking for, it’s pretty much useless.
Because it would be better to teach a man to fish instead of feeding him fish everyday we do not want to reduce our user to read a monkey see monkey do documentation (imitating something is not enough to really understand). This document tries to respect your time, to avoid repeating itself, to not be too verbose while still bringing real value and insights.
You may benefit from reading the documentation linearly, but assuming you know what to look for, you should make use of the search bar functionality or the left-hand side.
This document was last updated: Tuesday, 11 February 2025 17:14:01 +0000.
User policies
Table of contents
- Accessing Adastra
- Programming environment
- Module, why and how
- CrayPE basics
- Changing CrayPE version
- Cray compiler wrapper
PrgEnv
and compilersPrgEnv
mixing and subtleties- Mixing
PrgEnv
and toolchain - Targeting an architecture
- Intra-process parallelization technologies
- Some wrapper, preprocessor definitions, compiler and linker flags
- Flags conversion for Fortran program
- Vectorizing for GCC and Clang based compilers
- Intel LLVM’s defaults
- Debugging with
crayftn
- Debugging with
gfortran
- Making the Cray wrappers spew their implicit flags
crayftn
optimization level details- AOCC flags
- Understanding your compiler
- Advanced tips and flags and environment variable for debugging
- Job submission
- The SLURM batch scheduler and job launcher
- Batch scripts
- Common SLURM submission options
- Resource consumption and charging
- Quality Of Service (QoS) queues
srun
- Interactive jobs
- Small job
- Chained job
- Job array
- Other common SLURM commands
- Job state
- Job reason codes
- Monitoring and modifying batch jobs
- Coredump files
- External documentation and training resources
- Software engineering
- Algorithm and generic programming
- Code quality
- The C and C++ languages
- Floating point computation
- Concurrency for parallel software
- Compiler infrastructure
- Generating (pseudo) random numbers
- CPU programming
- GPU programming
- Notions of debugging
- A note on benchmarks
- The Bash Unix shell
- On the issues encountered in software engineering
- Network programming, distributed and shared memory abstractions
- Choosing a license
- Hardware for HPC
- Other
- Software engineering