Is Parallel Programming Hard, and, If So, What Can You Do About It? [pdf]

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • ZIO

    ZIO — A type-safe, composable library for async and concurrent programming in Scala

    I use ZIO (http://zio.dev) for Scala which makes parallel programming trivial.

    Wraps different styles of asynchronicity e.g. callbacks, futures, fibers into one coherent model. And has excellent resource management so you can be sure that when you are forking a task that it will always clean up after itself.

    Have yet to see anything that comes close whilst still being practical i.e. you can leverage the very large ecosystem of Java libraries.

  • cunumeric

    An Aspiring Drop-In Replacement for NumPy at Scale

    I am biased because this is my research area, but I have to respectfully disagree. Actor models are awful, and the only reason it's not obvious is because everything else is even more awful.

    But if you look at e.g., the recent work on task-based models, you'll see that you can have literally sequential programs that parallelize automatically. No message passing, no synchronization, no data races, no deadlocks. Read your programs as if they're sequential, and you immediately understand their semantics. Some of these systems are able to scale to thousands of nodes.

    An interesting example of this is cuNumeric, which allows you to take sequential Python programs that use NumPy, and by changing one line (the import statement), run automatically on clusters of GPUs. It is 100% pure awesomeness.

    https://github.com/nv-legate/cunumeric

    (I don't work on cuNumeric, but I do work on the runtime framework that cuNumeric uses.)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • miner_mover

    Concurrency and Parallelism Sandbox

    I have a small project in Ruby to explore different concurrency and parallelism strategies: https://github.com/rickhull/miner_mover

  • legion

    The Legion Parallel Programming System (by StanfordLegion)

    If you really want to dig into it you can read up on the tutorials and/or papers from the Legion project: https://legion.stanford.edu/

    But briefly, these task-based programs preserve sequential semantics. That means (whatever the system actually does when running your program), as long as you follow the rules, the parallelism should be invisible to the execution of the program.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts