The aim of the HPC Summer School is to introduce the cornerstone of programming tools and techniques used for efficient parallel applications with special emphasis to High Performance Computing for students and professionals, among the fields of engineering and science, with basic and intermediate programming skills. This will allow them to advance their careers by harnessing the computational power of HPC to tackle large scale problems in their respective fields. Following from the school initiative, the event intends to accomplish the creation of collaborative interdisciplinary groups and the education of the next generation of highly specialized programmers. Ultimately, procuring innovative and efficient algorithms to optimally process all kinds of workflows.

What You Should Know

The full stack of the courses and hands-on sessions require familiarity with programming languages and its logic. More specifically, we are sitting on C a function paradigm programming framework whose development dates back 40 years and is extensively used for high performance calculations alongside Fortran. In the context of the present event, we expect the assistants to have knowledge of data types, pointers, vectors and experience with parallel computation schematics is desirable, though not required. In addition to basic programming knowledge, we will be profiling the developed algorithms to identify performance improvements and possible design bottlenecks. Although knowledge of profiling tools is preferred, you will be working on it during the week, which will give you the time to learn.

On the matter of integrations, experience with Python is expected as we intend to provide an outlook to expanding Python’s versatility with high performing algorithms for solving big data and large scale problems efficiently. Also, we would like to highlight that this trait is enormously appreciated in today’s development groups for its versatility in the process of building and commercializing multi-purpose applications for both academic and industrial sectors.

What You Will Learn

Stemming from this school, you will be able to procure the parallelization of tasks, which is a matter relative to each problem. Although similar strategies may apply, recognizing the kinds of situations fit for a parallel approach is not only a skill that you will learn but it requires training, exercising and a keen eye that is only built from personal experience. You will also encounter that the number of problems still to be solved in this arena is enormous. Learning to profile your code also builds dexterity and ability to identify bottlenecks, bugs and improvements. Learning also different computing architectures, each with a specific design fingerprint, you will be able to tackle the same problem from different angles. Last, but not least, the ability to exploit computational power with a robust algorithm for a specific application has infinite possibilities. You know by now that there is still quite a bit of roadwork ahead and the key is to perform well in time and resources.