Чтобы использовать систему ПВМ, приложение должно пройти две стадии. Первая заключается в разработке распределенной в памяти параллельной версии алгоритма приложения; эта фаза общая как для системы ПВМ, так и для других мультипроцессоров с распределенной памятью. Фактические параллельные решения подпадают под две главные категории - одна связана со структурой, другая связана с эффективностью. В решениях, связанных со структурой распараллеливаемых приложений, основной упор делается на выбор используемой модели (т.е. беспорядочные вычисления в противовес древовидным вычислениям или функциональной декомпозиции). Решения с упором на эффективность - когда распараллеливание ведется в среде распределенной памяти - в целом ориентировано на минимизацию частоты и интенсивности коммуникаций. Обычно в отношении последних можно сказать, что процесс распараллеливания различен для ПВМ и для аппаратных мультипроцессоров; для среды ПВМ, основывающейся на сетях, сильная степень детализации, как правило, ведет к лучшей производительности. При наличии указанной особенности, процессы распараллеливания для ПВМ и для других сред с распределенной памятью, включая аппаратные мультипроцессоры, очень похожи.
Распараллеливание приложений можно делать "интуитивно", взяв за основу существующие последовательные версии или даже параллельные. В обоих случаях стадии сводятся к выбору подходящего алгоритма для каждой из подзадач приложения - обычно с помощью опубликованных описаний - или изобретением параллельного алгоритма и последующему кодированию этого алгоритма на выбранном языке (C, C++ или Fortran 77 - для ПВМ), а также реализации интерфейса с другими приложениями, управляющим процессом и прочими конструкциями. При распараллеливании существующих последовательных программ также обычно следуют общим рекомендациям, первичным из которых является "разрыв петель", начиная с наиболее удаленных петель и постепенно продвигаясь вглубь. Основная работа такого процесса заключается в определении зависимостей и разбивании петель таким образом, чтобы зависимости не нарушались при возникновении параллельных выполнений. Процесс такого распараллеливания описан в ряде печатных изданий и учебников по параллельному программированию, хотя в немногих из них обсуждаются практические и специфические аспекты трансформации последовательной программы в параллельную.
Существующие параллельные программы могут базироваться либо на парадигме разделения памяти, либо на парадигме распределенной памяти. Приспособление написанных программ для разделяемой памяти к ПВМ походит на преобразование из последовательного кода, причем версии с разделяемой памятью базируются на векторном или на уровне петель параллелизме. В случае с программами, явно разделяющими память, первичная задача состоит в поиске точек синхронизации и замещении их обменами сообщениями. Для преобразования для распределенной памяти параллельного кода к ПВМ, главная задача состоит в преобразовании одного набора параллельных конструкций в другой. Обычно, существующие параллельные программы для распределенной памяти написаны либо для аппаратных мультипроцессоров, либо для других, сетевых сред, таких, как p4 или Express. В обоих случаях, главные изменения требуются в отношении подсистемы управлении процессами. В примере с семейством Intel DMMP, обычной практикой является запуск процессов с помощью командной строки интерактивных оболочек. Такая парадигма должна замещаться ПВМ - либо посредством ведущей программы, либо посредством программы для станции, берущей на себя ответственность за порождение процессов. В смысле взаимодействия, при этом, к счастью, много общего между вызовами по обмену сообщениями в различных средах программирования. Основными отличиями ПВМ и других систем в этом контексте являются: