Giter Site home page Giter Site logo

berkeley_2023_optimization_and_parallel_computing's Introduction

"Optimization and high performance computing in Julia" - 2 day workshop

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.

2. Scaling up numerical computing in Julia (Tuesday, Nov, 21)

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.

Installation instructions

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-3pmOptimization 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-3pmScaling 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.

img


berkeley_2023_optimization_and_parallel_computing's People

Contributors

pszufe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.