Programming with distributed functional futures
macs.hw.ac.uk
macs.hw.ac.uk
Dataflow can be used for pipelined parallelism, which is often exploited on fine grained concurrent embedded hardware such as FPGAs. The dataflow programming style can also be used for task parallel scheduling on CPUs. There are a number of Haskell libraries for shared-memory parallel dataflow programming, including monad-par for deterministic and lvish for quasi-deterministic parallelism. There are others that support distributed-memory parallel dataflow programming, including the HdpH DSLs, and the Cloud Haskell Platform library, which closely resembles the Erlang Remote Procedure Call functionality. They don’t share a common notation for creation of and operations on futures, and this post gives their correspondence.
Distributed programming usually involves sending messages between processes. So you might spawn a process locally and then send a message to a remote process and wait for response. But heave "future/promise" use not a common pattern as far as I know.
Erlang's VM definitely runs each node on as many cores as are available. It has done so for several years now. For example, running his fib_rpc program on a single node on an 8-core machine using Erlang R18 happily consumes all available CPU on all cores.
Perhaps he's saying that there is no automatic support for placing tasks on particularly underutilized nodes?
laziness leaks.