Является ли параллельное программирование таким же, как параллельное программирование?

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

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

а также

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

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

Спасибо


person devoured elysium    schedule 11.11.2010    source источник
comment
+1 Отличный вопрос. Может быть, лучше существовать на programmers.stackexchange.com? Programmers - Stack Exchange is for expert programmers who are interested in subjective discussions on software development.   -  person John K    schedule 11.11.2010
comment
@JohnK Я не думаю, что эти определения субъективны.   -  person J D    schedule 07.01.2012


Ответы (3)


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

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

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

person Josephine    schedule 11.11.2010
comment
+1 за продуманность, но последнее предложение наверняка шутка? - person Rafe Kettler; 11.11.2010

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

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

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

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

person Rafe Kettler    schedule 11.11.2010

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

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

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

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

person Massimo Cafaro    schedule 14.03.2011