Session 1: Tuesday, March 2, 2:15 p.m. – 3:55 p.m. CST

Session 2: Wednesday, March 3, 2:15 p.m. – 3:55 p.m. CST

Ben Brock, University of California Berkeley, U.S.

Aydin Buluc, Lawrence Berkeley National Laboratory and University of California Berkeley, U.S.

Tim Mattson, Intel Corporation, U.S.

Scott McMillan, Carnegie Mellon Software Engineering Institute, U.S.

Jose Moreira, IBM, U.S.

Combinatorial algorithms are an important class of algorithms that are based on networks of values. The classic instance of these algorithms is algorithms applied to systems expressed as graphs. Graph algorithms are fundamental in data sciences but also appear in a wide range of Computational Sciences applications in chemistry, ecology, biology, particle physics, and more. A community spanning academia, industry, and national labs have created a standard for graph algorithms called the GraphBLAS (http://graphblas.org). These are standard building blocks for performing graph computations using sparse linear algebra. The GraphBLAS API has gone through several iterations in the last few years and has reached a rather stable point thanks to the feedback from implementers and the community at large. The maturity of the SuiteSparse::GraphBLAS library by Tim Davis enables rapid development of new graph algorithms that run with high-performance on current systems. The ability to effectively utilize GraphBLAS in their scientific domains will arm Computational Scientists and Engineers with an indispensable tool. We believe that the CSE audience is the right one for this tutorial due to their background and familiarity with linear algebra and the large set of graph problems encountered in the computational sciences.

Session 1: Monday, March 1, 4:15 p.m. - 5:55 p.m. CST

Session 2: Tuesday, March 2, 9:45 a.m. - 11:25 a.m. CST

Brian Drawert, University of North Carolina, Asheville, U.S.

Andreas Hellander, Uppsala University, Sweden

Linda Petzold, University of California, Santa Barbara, U.S.

A striking outcome of the past decade of Systems Biology research is the insight that stochasticity plays an important role in many biological processes. As a result, discrete stochastic simulation is now an important and widely-used tool for modeling of biological systems. To facilitate this type of modeling we have built a powerful platform: StochSS (Stochastic Simulation as-a-Service) for the development, simulation and analysis of biochemical models, as well as a complete suite of tools for simulation and analysis, 2D and 3D visualization, and the ability to scale up computational resources. In this tutorial we will begin by providing an introduction to the basic concepts and commonly-used algorithms of discrete stochastic simulation, for both well-mixed and spatial systems. The remainder of the tutorial will be focused on the development and analysis of biochemical models using StochSS.

Session 1: Monday, March 1, 9:45 a.m. – 11:25 a.m. CST

Session 2: Monday, March 1, 2:15 p.m. – 3:55 p.m. CST

Carmen G. Almudever, Delft University of Technology, The Netherlands

Matthias Möller, Delft University of Technology, The Netherlands

Quantum Computing is an emerging compute technology that has the potential to change the way we will be solving computational problems in the future even more radically than GPUs and other types of accelerator devices did during the last decade. In contrast to GPUs which follow the classical von-Neuman computer architecture, Quantum Processing Units (QPUs) require a fundamental redesign of algorithms to exploit the full potential of quantum mechanical phenomena such as superposition of states and entanglement which enable exponential speed-ups over classical algorithms for certain types of scientific applications. To facilitate the development of quantum-accelerated hybrid computer programs, the LibKet project (Kwantum Expression Template LIBrary) which aims at providing similar functionality for QPUs as Nvidia’s CUDA framework does for GPUs. LibKet makes it possible to implement quantum algorithms as generic expressions that can be instantiated for a concrete problem size and offloaded to a continuously growing number of QPU backends (hardware: IBM Q Experience, Rigetti’s Quantum Cloud Service, simulator: Quantum Inspire, QX, QuEST). LibKet provides unified APIs for C, C++ and Python and places the focus on the seamless integration of quantum kernels into classical codes which is a distinguishing feature from most other quantum programming SDKs that mostly focus on the development of standalone quantum algorithms and are often restriction to a single vendor-specific QPU backend. Like CUDA, LibKet ships with low-level routines implementing its core functionality and a growing library of ready-to-use high-level routines providing customizable implementations of quantum algorithms for CSE applications.

Session 1: Wednesday, March 3, 4:15 p.m. – 5:55 p.m. CST

Session 2: Thursday, March 4, 9:45 a.m. - 11:25 a.m. CST

Laurent Hascoët, INRIA, Sophia-Antipolis, France

Paul Hovland, Argonne National Laboratory, U.S.

Jan Hueckelheim, Argonne National Laboratory, U.S.

Sri Hari Krishna Narayanan, Argonne National Laboratory, U.S.

Automatic Differentiation (AutoDiff) is a powerful tool for the computation of derivatives of functions defined by computer programs. AutoDiff lies at the heart of frameworks for machine learning, modeling languages for mathematical optimization, and derivative-based uncertainty quantification techniques. In this minitutorial, we aim to introduce the basic concepts of automatic differentiation, describe implementation techniques, and discuss the effective use of AutoDiff tools and frameworks. We introduce AutoDiff concepts such as forward mode, reverse mode, backpropagation, cross-country preaccumulation, and edge pushing. We cover these concepts primarily in the context of a directed acyclic graph (DAG) computational model, augmented by matrix, tensor, and algorithmic models as appropriate. We describe implementation strategies, including operator overloading, source transformation, and just-in-time compilation. We cover these approaches in terms of stand-alone tools, AutoDiff libraries, and programming languages and frameworks with a builtin AutoDiff capability. We discuss various techniques for exploiting parallelism in the derivative computation. We discuss effective use of AutoDiff tools and frameworks, including how to exploit sparsity in derivative matrices, how to reduce memory and storage requirements, how to effectively combine multiple AutoDiff tools, and how to deal with functions that may not be chain-rule differentiable. We will motivate each of these topics with examples and discuss applicable libraries and tools.

Session 1: Thursday, March 4, 2:15 p.m. - 3:55 p.m. CST

Session 2: Thursday, March 4, 4:15 p.m. - 5:55 p.m. CST

Graham Lopez, Oak Ridge National Laboratory, U.S.

Jack Morrison, Oak Ridge National Laboratory, U.S.

Tom Papatheodore, Oak Ridge National Laboratory, U.S.

Veronica Melesse Vergara, Oak Ridge National Laboratory, U.S.

This tutorial is meant to deliver relevant high-performance computing (HPC) knowledge to participants with a wide range of previous experience in computational science through hands-on examples on one of the world’s most powerful supercomputers. We will begin with a short presentation describing the system architecture as well as a brief overview of the components commonly used on HPC systems (e.g., resource scheduler, job launcher). Afterward, we will move into the main hands-on session where attendees will get to “choose their own adventure” by selecting several self-guided challenge problems to complete based on their experience level and/or interests. The challenge problems will span a wide range of topics, from introductory/beginner material (e.g., walking through a basic workflow: set up programming environment, compile, request resources with batch scheduler, launch executable with job launcher) to exploring different methods of programming GPUs (e.g., CUDA, HIP, OpenACC, OpenMP offloading, etc.). Staff from the Oak Ridge Leadership Computing Facility (OLCF) will work with attendees to give guidance and answer questions along the way. So whether a participant typically sits at a workstation and would like to learn about using HPC clusters, or they are an experienced user of HPC systems and would like to add skills to their existing HPC tool belt, this tutorial will provide relevant content chosen by the participants to fit their needs/curiosities.

Session 1: Friday, March 5, 8:30 a.m. - 10:10 a.m. CST

Session 2: Friday, March 5, 10:20 a.m. – 12:00 p.m. CST

Eugenio Angriman, Humboldt University of Berlin, Germany

Henning Meyerhenke, Humboldt University of Berlin, Germany

Alexander van der Grinten, Humboldt University of Berlin, Germany

Networks (or graphs) are a popular tool to model relations between pairs of entities. Phenomena like social networks, transportation systems or the Internet can naturally be represented as graphs (among others). The analysis of large networks requires efficient and scalable algorithms, as traditional techniques fail to handle large inputs. This minitutorial gives an introduction to network analysis using NetworKit, an open-source toolkit for large-scale network analysis. NetworKit provides a rich collection of analytics, including state-of-the-art implementations from recently published papers on centrality measures, community detection, graph generation and more. The tutorial will cover visualization, network centrality measures, generation of random graphs, community detection, dynamic algorithms, randomized algorithms, algebraic algorithms, link prediction, and experimental algorithms.