Является ли параллельное программирование таким же, как параллельное программирование? - PullRequest
12 голосов
/ 11 ноября 2010

Они оба одно и то же? Глядя на то, что означает параллелизм или параллелизм в геометрии, я бы определенно сказал нет:

В геометрии две или более линий называются параллельными, если они пересекаются в одной точке.

и

Две линии на плоскости, которые не пересекаются или встречаются называются параллельными линии.

Опять же, в программировании они имеют одинаковое значение? Если да ... Почему?

Спасибо

Ответы [ 3 ]

6 голосов
/ 11 ноября 2010

Я согласен, что словарь геометрии находится в конфликте. Вместо этого подумайте о железнодорожных путях: два поезда, которые находятся на параллельных путях, могут двигаться независимо друг от друга и практически без взаимодействия. Эти поезда ходят параллельно, параллельно.

Основная сложность использования заключается в том, что «одновременный» может означать «одновременно» (с поездами или кодом) или «в одном месте» (с геометрическими линиями). Во многих практических целях (поезда, ресурсы потоков) эти два понятия находятся в прямом конфликте.

Естественный язык предполагается глупым, двусмысленным и запутанным. Но мы программисты. Мы можем найти убежище в ясности, простоте и элегантности наших официальных языков программирования. Как Perl.

3 голосов
/ 11 ноября 2010

Из Википедии:

Параллельные вычисления - это форма вычисления, в которых программы разработан как коллекция взаимодействующих вычислительные процессы, которые могут быть выполняется параллельно.

По сути, программы могут быть написаны как параллельные программы, если они состоят из меньших взаимодействующих процессов. Параллельное программирование фактически выполняет эти процессы одновременно.

Итак, я полагаю, что параллельное программирование - это действительно стиль, который поддается процессам, выполняемым параллельно, для повышения производительности.

2 голосов
/ 14 марта 2011

Нет, однозначно, параллелизм отличается от параллельного. вот как именно.

Параллелизм относится к совместному использованию ресурсов в один и тот же период времени. Например, несколько процессов могут использовать один и тот же ЦП или общую память или устройство ввода-вывода.

Теперь, по определению, два процесса являются параллельными, если только второй начинает выполнение до того, как первый завершится (на том же процессоре). Если оба процесса работают на одном и том же - скажем, пока - одноядерном процессоре, процессы являются параллельными, но не параллельными: в этом случае параллелизм является только виртуальным и относится к ОС, делающей распределение времени. Похоже, что ОС выполняет несколько процессов одновременно. Если имеется только один одноядерный процессор, в любой конкретный момент времени может выполняться только одна инструкция только от одного процесса. Поскольку шкала времени человека в миллиарды раз медленнее, чем у современных компьютеров, ОС может быстро переключаться между процессами, создавая видимость одновременного выполнения нескольких процессов.

Если вместо этого вы запустите два процесса на двух разных процессорах, процессы будут параллельными: в один и тот же период времени не будет общего доступа, поскольку каждый процесс выполняется на своем собственном процессоре. Параллелизм в этом случае не виртуальный, а физический. Здесь стоит отметить, что работа на разных ядрах одного и того же многоядерного ЦП по-прежнему не может быть классифицирована как полностью параллельная, поскольку процессы будут совместно использовать одни и те же кэши ЦП и даже будут бороться за них.

...