> On Aug 13, 2015, at 12:04 PM, Juan Carlos Kuri Pinto <[email protected]> wrote: > > Regarding massive parallelism, Haskell is naturally parallelizable because it > is 100% pure. That is, Haskell doesn't have mutating state. You never modify > memory locations. You only create new constants and let the garbage collector > remove them when they are out of scope.
This is an incorrect conception of massive parallelism. The above model creates a vast amount of shared, mutable state that is being ignored. It is the reason languages like Haskell are poor for massive parallelism in practice. What you describe above is focused on data access parallelism. Unfortunately, topological parallelism dominates scalability in massively parallel systems. Computing models that rely on immutable memory are generally gaining that data access parallelism by reducing the efficiency of topological parallelism. Memory locations are not the only mutable state in real computing systems. The wires that move data *between* memory locations are also a dynamic shared writable resource, and a relatively scarce one at that. Computing models that effect mutability by copying state greatly increase the contention for this resource and exhibit strong sublinearity as the parallelism increases. The most efficiently parallelizable computing models use non-shared mutable state. You basically move functions (which are naturally immutable and compact) to the process that owns the state you want to mutate. This allows very efficient topological parallelism, and since the state is almost never shared between processes, most of the problems immutable memory is designed to solve do not apply. It is actually an elegant if somewhat unintuitive model in implementation. Even on single machines, this model typically offers an integer factor throughput improvement over lock-free multithreading models of parallelism and concurrency (or functional models). Cheers, Andrew ------------------------------------------- AGI Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-f452e424 Modify Your Subscription: https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-58d57657 Powered by Listbox: http://www.listbox.com
