Я согласен со всеми предыдущими ответами, но я думаю, что ключевой момент, который не совсем ясен, заключается в том, что одна из причин, по которой MPI может считаться трудной, а Erlang легкой, - это соответствие модели области.
Erlang основан на концепции локальной памяти, асинхронной передачи сообщений и общего состояния, решаемых с использованием некоторой формы глобальной базы данных, к которой могут добраться все потоки. Он предназначен для приложений, которые не перемещают большой объем данных, и которые не должны разбираться на 100 000 отдельных узлов, которые нуждаются в координации.
MPI основан на локальной памяти и передаче сообщений и предназначен для задач, в которых перемещение данных является ключевой частью домена. Высокопроизводительные вычисления очень важны для того, чтобы взять набор данных для проблемы и распределить его среди множества вычислительных ресурсов. И это довольно тяжелая работа в системе передачи сообщений, поскольку данные должны быть явно распределены с учетом баланса. По сути, MPI можно рассматривать как неохотный прием, который разделяемая память не масштабирует. И он нацелен на высокопроизводительные вычисления, распространяющиеся на 100 000 процессоров и более.
Эрланг не пытается достичь максимально возможной производительности, а скорее разбивает естественную параллельную задачу на ее естественные потоки. Он был разработан с совершенно другим типом задач программирования по сравнению с MPI.
Таким образом, Erlang лучше по сравнению с pthreads и другими довольно локальными гетерогенными решениями потоков, чем с MPI, который действительно нацелен на совсем другой (и в некоторой степени по своей природе сложный) набор проблем.