RSSAmplifier

Blog

Work Hard, Span Easy

Parallelizing things is easy, but making them fast is hard. A blog about parallel algorithms, data structures, programming languages, and anything else that comes to mind. Written by Sam Westrick.

shwestrick.github.ioRSS feed ↗7 posts

Latest posts

Using MaPLe to Solve the One Billion Row Challenge

The One Billion Row Challenge took off recently, and I thought it would be fun to try solving it using MaPLe (MPL for short). The MPL language is a parallel functional language, with excellent scalability on multicore machines. I have access to a 72-core (144 hyperthreaded) multicore server, so let’s see how fast we can get on that machine.

Race Conditions Can Be Useful for Parallelism

Many are well aware of the hazards of race conditions. But what about the benefits?

Visualizations of Parallel Delaunay Triangulation

In a Delaunay triangulation, no circumcircle contains another point. Delaunay triangulations have a lot of applications: for example, in graphics, to produce “nice” meshes which avoid skinny triangles.

Purely Functional Parallel Flattening

A curiosity grabbed ahold of me a couple weeks ago. The question is: how many primitives do we really need in a general purpose, parallel, functional programming language? After all, many interesting functions can be expressed in terms of one another. Perhaps the simplest example would be implementing a parallel map on arrays in terms of tabulate, i.e. the “build-an-array” function, which in…

Learning Mandarin by Writing Everything

Over the past two months, I’ve developed a morning routine: Drink a big glass of water (always hydrate before you caffeinate, folks) Pour a cup of coffee (essential) Eat breakfast (almost always scrambled eggs… delicious) Open Duolingo, and write down everything . “Write down everything”, you say? Yes, everything! For learning Mandarin, I can’t imagine doing it any other way. The pages up top show…

Parallel Digital Reverb

While browsing through The Computer Music Tutorial by Curtis Roads, I came across a beautifully simple reverberator circuit. This circuit simulates the acoustic effect of a particular space—such as a concert hall or cathedral—using only two components: comb and all-pass filters. The filters can be tuned to simulate a variety of different spaces.

Parallel Seam Carving

Seam carving is a technique for content-aware resizing, which changes the size of an image while attempting to preserve the interesting content of the image. The basic idea behind the technique is to remove low-energy seams: paths of pixels that are similar to their surroundings. A removed seam can be either vertical or horizontal, to reduce either the width or height of an image.