Skip to content

lehins/talks

Repository files navigation

Talks

Material presented at various events

Table of Contents

2021 - Haskell eXchange - Multi-dimensional Arrays that Do Not Exist

Abstract

The goal of this talk is to explain delayed arrays, that are available in massiv library, as well as their roles in fusion and parallelization of operations applied to multi-dimensional arrays.

Immutable arrays in Haskell come with great safety properties and provide opportunities for a variety of optimizations. However, without fusion most operations on arrays do not compose efficiently due to intermediate allocations. Delayed arrays provide us with a reliable fusion framework, which is fully controlled by the user and guided by the type checker.

Many operations on arrays are massively parallel, however the common Haskell technique of evaluating with par and pseq and relying on GHC's spark pool is not applicable to unboxed arrays because it relies on laziness. Combination of a custom scheduler and delayed arrays can help us with a solution, so we can benefit from multi-core parallelization.

2021 - HaskellerZ - New random interface

Abstract

This talk is about the recent addition to the interface of random package, the defacto package for generating random values in Haskell. Those recent changes include performance an usability improvements, which are of course briefly mentioned in the talk. However, majority of the time in the talk is dedicated to the stateful interface that unifies together pseudo-random generators that use pure state pasing and the ones that rely on a large mutable state.

2020 - HaskellerZ - Color in Haskell

Abstract

This talk targets any beginner to advanced level developer who would like to understand ways to represent and manipulate colors programmatically in Haskell with the Color library

The goal is to convey the meaning of what a color space is and shatter the common confusion with the color model. Discusses concepts involved in defining various color spaces and conversion between them. There will be a tutorial on how to write correct and efficient code that performs these conversions without the need to understand the math behind it. Lastly we'll see how to apply the knowledge learnt to convert some images.

2019 - Monadic Party - Haskell arrays with Massiv

Abstract

If you are not used to the pure functional paradigm, then dealing with arrays in Haskell can be very unintuitive, the code you write can become inefficient, especially if you choose the wrong library or an incorrect data structure for the job.

Throughout the series of talks and workshops I will cover some concepts about native arrays that every Haskell programmer should understand as well as provide concrete examples on how to deal with multidimensional arrays using the massiv library. First lectures will start with basic topics, such as memory representations and how to properly handle mutation. Then we will transition into more advanced notions of fusion, stencils and other ways of avoiding unnecessary computation, while taking advantage of automatic parallelization. Besides looking at many simple examples we will have hands on experience developing a more complex application that will reinforce the understanding of concepts introduced earlier.

2019 - FP Complete webinar - RIO, a standard library for Haskell

Abstract

In this month's webinar, Alexey Kuleshevich demonstrated just how easy it is to get started with RIO, the standard library for Haskell. As a recap, RIO is not only a library but is a collection of solutions to some of the most common problems in the Haskell ecosystem as well as a description of the best practices and design patterns. It also introduces the RIO monad, which promotes a drastic simplification over the common approach of an endless stack of transformers.

2018 - Monadic Warsaw #14 - Haskell arrays that are easy and fast

Abstract

This talk will be about manipulation of multidimensional arrays in Haskell using freshly baked library called massiv. No prior exposure to arrays in Haskell will be required, understanding of what an array is and familiarity with basic functional programming should be sufficient.

First part of the talk will be an overview of the library and some of the core concepts: in memory data representation, array indexing and manual fusion.

Further will follow some examples of array processing mechanisms such as folding, extracting, slicing etc. after which we'll dive into some more advanced features, in particular stencil computation, parallelization and overview of the scheduler.

Performance and ease of use are the two main goals of the library, therefore expect plenty of usage examples, benchmark results and some comparison to existing libraries such as Vector, Repa and Accelerate.

Time permitting, we might look into massiv application in Image Processing.

About

Material presented at various events

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published