====== Introductory Courses ====== HKHLR & CSC offers, every second month, a course session for researchers using, or interested to use, the Goethe-CSC or FUCHS in Frankfurt. The course sessions gives a cluster computing introduction, are hosted at the Goethe university in Frankfurt am Main and are delivered by HPC experts. The sessions are readily cluster-oriented, so knowledge of a programming language or of a scientific computing software is assumed. Training session are delivered in English. You can download a quick reference guide with a brief instruction //how to work on the Goethe-CSC cluster?//, facts about the cluster and a short reference of SLURM commands. {{:public:clusterDec2020.pdf|cluster}} Under [[downloads:workshops|Downloads]] every course participant can download the workshop slides. **News: The next Cluster Computing Course is on March 20, 2020. ** Everyone is invited to attend the course session. The participation of the introductory course is free. If you wish to participate, please choose your course session and send an email to . The details about the HKHLR-Tutorials you will find [[ https://csc.uni-frankfurt.de/wiki/doku.php?id=public:events | here]]. ====== Course Sessions ====== | **ACRONYM** | **Course Title** | | UNIX | Introduction to UNIX | |TOOLS | Software Tools for UNIX Systems | |GIT | Introduction to GIT | |SHELL | Introduction to Shell Scripting | |CLUSTER | Cluster Computing Course | |PYTHON | Introduction to Python | |CPP | Introduction to Cpp | |TOTALVIEW | Introduction to TotalView Debugger | |MATLAB|Cluster Computing Course for Matlab Users| ===== Introduction to UNIX ===== The first session introduces to UNIX, the most common operating system in HPC. Basic understanding of UNIX commands are necessary to take advantage of the clusters. {{ :public:unix.pdf | unix}} **Contents:** * Introduction to UNIX (operating system) * File system and permissions * Elementary UNIX commands (cd, ls, cp, mv, etc.) * Basic shell usage (redirection, pipes) * File viewing (cat, more, less, etc.) * Process management (top, kill, etc.) * Task control (bg, fg) * Setting of environment variables * File system basic (du, df, etc.) * SSH protocol, password authentication, keys * Transferring and compressing files (scp, rsync, tar) * Getting Help (man, etc.) ===== Software Tools for UNIX Systems ===== After an introduction to UNIX, the following session explains different software tools for UNIX Systems. **Contents:** * Editor vim * Regular Expressions (grep, find, sed, awk) ===== Introduction to Version Control with GIT ===== In this lecture the distributed version control system Git will be presented. Git is very well established in Linux community and used for large projects, e.g. for kernel development. {{ :public:git.pdf | git}} **Contents:** * Explanation of Key Concepts (Snapshots, Commits, Repositories) * Prerequisites (install, config, create repository) * Basic Commands (status, add, commit, clone, push, pull, remote) * Branching (create, rename, delete, switch, update & merge branches) * Typical Workflow Concepts for Branching * Dealing with Merge Conflicts * Cool Add-Ons (stash, log, gitignore, worktree) ===== Introduction to Shell Scripting ===== The third session shows how to write shell scripts, introduces you to the shell scripting commands and explains language constructs. {{ :public:shell.pdf | shell}} **Contents:** * Introduction to Shell Scripting * Invoking the shell * Shell: Syntax, Variables, Arithmetic * Command History * Job Control * Language Constructs * Decision making (if condition) * Loops in shell scripts (for loop, while loop) * The case Statement * Functions * Shell Debugging ===== Cluster Computing Course ===== === Cluster Facts === In this session we will present some interesting facts and characteristics of Goethe-HLR & FUCHS cluster. * Hardware resources * File system * Environments Modules * Partitions on the clusters * Architecture of the partitions === Batch Scheduling === SLURM is the job scheduler installed on Goethe-HLR & FUCHS cluster. * Introduction to SLURM (**S**imple **L**inux **U**tility for **R**esource **M**anagement) * Basic SLURM usage (SLURM commands) * Resource management * Job submission (sbatch, salloc + srun) * CPU management * Creating a parallel Job * HOW-TO-SLURM (login, submitting and monitoring of batch scripts examples) Additionally teaches the session: * how to prepare a submission script * how to submit, monitor, and manage jobs on the clusters * theory about resource and CPU management === SPACK Package Manager === * Basic Installation Guide * Configuration facts * Package Creation Tutorial * Environment Setup * Developer Workflow Guide ===== Introduction to C++ ===== We will provide an introductory course in C++. This course aims to provide you with the basic concepts of C++, how to write and read programs written in C++. At the end of this course you should also be able to understand the basic concept of any program written in a c-like language. **Contents:** * Introduction: C to C++ * How to write a C++ program * C++ Syntax, Variables and Types * Pointer and Memory management * Object Oriented Programming with C++ * The C++ Standard Library ===== Introduction to TotalView Debugger ===== This additional course will introduce you to the TotalView Debugger and teaches you how to efficiently debug code. The lessons will be supplemented with some hands-on exercises based on what you learned in the C++ session. ===== Introduction to Python ===== We will provide an introductory course in Python. It will be the first session of the python series, that will be held in future. **Contents:** * Introduction: What is Python? Why Python? * The firsts steps * Basic types * Statements and syntax * Functions * Modules * Classes * Exceptions