Вопрос

Что означает "параллельное программное обеспечение"? и каковы различия между «параллельным программным обеспечением»; и «обычное программное обеспечение»?

Каковы его преимущества и недостатки?

Пишет ли "параллельное программное обеспечение"? Требуется конкретное оборудование или язык программирования?

Это было полезно?

Решение

http://en.wikipedia.org/wiki/Thread_(computer_science)

  

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

Большинство современных языков программирования так или иначе поддерживают многопоточность (даже Javascript в новейших версиях). : -)

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

Вы по-прежнему можете писать / запускать многопоточный код на машине с одним процессором. Хотя для выполнения задач будет только один процессор, операционная система обеспечит их одновременное выполнение за счет быстрого переключения контекста и одновременного выполнения нескольких инструкций для каждого потока.

Некоторое специализированное оборудование, с которым вы, возможно, знакомы и которое выполняет параллельные задачи, - это графический процессор, который можно найти на большинстве новых компьютеров. В этом видео Mythbusters демонстрируют разницу между рисованием на однопоточном процессоре и многопоточном графическом процессоре:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

Другие советы

  

Являются ли "параллельным программным обеспечением"? требуется указанное аппаратное обеспечение или язык программирования?

Да и да.

Первый из них тривиально прост. Большинство современных процессоров (скажем, что-то более новое, чем m6800) имеют аппаратные функции, которые позволяют выполнять более одного действия одновременно, но не обязательно оба одновременно. Например, когда прерывание по таймеру сработало, процессор может сохранить то, что он делает, а затем начать делать что-то еще. Эти задачи выполняются одновременно.

Даже без этого вы можете просто получить две машины с каким-либо соединением друг с другом (например, простым последовательным соединением через адаптер нуль-модема), и они могут работать параллельно над одной и той же задачей.

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

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

Самый простой способ сделать это - использовать потоковую библиотеку, которая предлагает некоторые инструменты, так что несколько задач могут быть организованы так, что они не будут засорять друг друга. Это не так просто, как пометить программу как параллельную, а система позаботится обо всем остальном, скорее, вы должны написать каждую задачу для связи с каждой другой задачей в любом месте, где есть вероятность их вмешательства.

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

Не уверен в недостатках, отличных от того, что программное обеспечение, поддерживающее многопроцессорность, обычно приводит к перегруженности процессора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top