Термины, кажется, не используются широко, возможно потому, что часто процесс или система используют оба без различия.Эти концепции являются очень общими и охватывают гораздо больше, чем сфера MPI или openmp.
Вертикальный параллелизм - это способность системы использовать несколько различных устройств одновременно.Например, программа может иметь поток, выполняющий тяжелые вычисления, в то время как другой обрабатывает запросы к БД, а третий выполняет IO.Большинство операционных систем естественным образом раскрывают эту способность.
Горизонтальный параллелизм возникает, когда используется одно устройство или выполняется операция над несколькими аналогичными элементами данных.Это тот тип параллелизма, который возникает, например, при запуске нескольких потоков в одном и том же фрагменте кода, но с разными данными.
В мире программного обеспечения интересным примером является алгоритм уменьшения карты, который использует оба:
Горизонтальный параллелизм происходит на этапе карты, когда данные разбиваются и разбиваются по нескольким процессорам для обработки,
вертикальный параллелизм происходит междуэтап отображения и редукции, где данные сначала делятся на куски, затем обрабатываются потоками карты и накапливаются потоком редукции
Аналогично, в мире аппаратного обеспечения суперскалярные конвейерные ЦП выполняютиспользуйте оба варианта, где конвейерная обработка является частным случаем вертикального распараллеливания (точно так же, как отображение / сокращение, но с несколькими дополнительными шагами).
Причина использования этой терминологии, вероятно, связана с теми же причинамииспользуется с цепочками поставок: значения производятся цепочкой различийНесколько шагов или уровней обработки.Конечный продукт можно рассматривать как корень абстрактного дерева конструкций (снизу вверх) или зависимости (сверху вниз), где каждый узел является результатом промежуточного уровня или шага.Вы можете легко увидеть аналогию между цепочками поставок и вычислениями здесь.