1. Optimization and mathematical programming with applications to spatial data
2. Scaling up computations in Julia
Instructor: Przemysław Szufel
Dates: Nov 20 & 21, 2023
Time:
Monday: 10:30am-noon; 1:30pm-3pm PST
Tuesday: 9:30am-11am; 1:30pm-3pm PST
Location:
University of California, Berkeley, CA, USA
Simons Laufer Mathematical Sciences Institute
Eisenbud Auditorium
Data analysis has become one of the core processes in virtually any professional activity. The collection of data becomes easier and less expensive, so we have ample access to it. The Julia language which was designed to address the typical challenges that data scientists face when using other tools. Julia, like Python, supports an efficient and convenient development process. At the same time, programs developed in Julia have performance comparable to C.
This workshop consists of two parts:
1. Optimization and mathematical programming in Julia with applications to spatial data (Monday, Nov, 20)
The Julia programming language boasts a specialized development in mathematical programming models, centered around the robust JuMP.jl ecosystem. It offers a comprehensive and user-friendly suite of packages tailored for various optimization problems, including LP, MILP, MINLP, QP, and SOCP. The JuMP.jl platform serves as a cohesive, Julia-based domain-specific language for mathematical programming, compatible with over 40 solvers. This suite encompasses all leading commercial packages, significant Open Source options, and solvers natively written in Julia.
This lecture will navigate you through the intricate JuMP.jl ecosystem, from constructing basic optimization models to the advanced optimization of transportation systems.
Writing code that seamlessly scales from an individual workstation to a supercomputing cluster is a complex task. In this tutorial, we will guide you on crafting efficient and high-performance code in Julia. We'll begin by identifying common pitfalls that can severely impact performance, such as type instability, the utilization of parametric types, and optimal data layout in memory.
Subsequently, we'll delve into techniques for scaling your code. We'll explore single instruction-multiple data (SIMD) operations, then progress to the use of green threads to enhance the performance of I/O processing. Following that, we'll demonstrate the principles of multithreading. The final stage of our journey will cover multiprocessing and the intricacies of massively parallel and distributed computing.
This workshop will be enriched with practical examples of parallelization patterns that are broadly applicable across various numerical computing endeavors.
Detailed installation instructions can be found in materials for the day 1.
If you have Julia installed and running this should be sufficient:
using Pkg
Pkg.activate(".") # assumes running the code in the main folder of this repository
Pkg.instantiate() # needed only when run for the first time
using IJulia
ENV["JULIA_NUM_THREADS"]=4
notebook(dir=".")
Schedule (all times are PST time zone)
Day 1 (Monday, Nov 20, 2023) | 10:30am-noon & 1:30pm-3pm | Optimization and mathematical programming in Julia with applications to spatial data
https://www.slmath.org/video-details/27815/34782 https://www.slmath.org/video-details/27816/34783 (For the lecture recording video link scroll to the bottom of the web page) |
Day 2 (Tuesday, Nov 21, 2023) | 9:30am-11am & 1:30pm-3pm | Scaling up numerical computing in Julia https://www.slmath.org/video-details/27817/34784 https://www.slmath.org/video-details/27818/34785 (For the lecture recording video link scroll to the bottom of the web page) |
This course has been supported by the Polish National Agency for Academic Exchange under the Strategic Partnerships programme, grant number BPI/PST/2021/1/00069/U/00001.