Многоядерная архитектура VS Многопоточность - PullRequest
0 голосов
/ 19 февраля 2019

Можем ли мы воспользоваться всеми преимуществами многоядерной архитектуры без многопоточности .?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Можем ли мы воспользоваться full преимуществом многоядерности без многопоточности?Определенно нет.Но у нас все еще может быть некоторый параллелизм.

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

И параллельная обработка все еще возможна путемсредство межпроцессного взаимодействия ( IPC ) в виде каналов или разделяемой памяти.Например, если вы выполните
taskset 0x01 sort | taskset 0x02 uniq
, вы запустите два процесса, сортируете на ядре 0 и uniq на ядре 1, и эти процессы будут взаимодействовать по каналу (реализованному в общей памяти).Обратите внимание, что это всего лишь пример и что операционные системы запускают новые процессы на разных ядрах без директивы taskset.

С помощью IPIX с общей памятью posix вы можете выполнять параллельные процессы, работающие на разных ядрах и обменивающиесяданные в выделенной зоне памяти.

И вы можете использовать openMPI для запуска многопроцессорных параллельных программ на многоядерном компьютере.Совместно используемая память будет использоваться для реализации передачи сообщений MPI.

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

0 голосов
/ 19 февраля 2019

Можем ли мы воспользоваться всеми преимуществами многоядерной архитектуры без многопоточности .?

Для обычных сред;Вы можете воспользоваться некоторыми преимуществами многопроцессорности без многопоточности (например, если у вас 8 ЦП и вы используете 8 отдельных однопоточных процессов, тогда ...).

Для не-кондиционные среды, кто знает?Например, может быть, вся система использует модель субъекта (программное обеспечение, разделенное на отдельные / независимые объекты, где каждый объект является обработчиком событий), где ОС имеет очередь ожидающих событий, и каждый ЦП «получает событие из очереди, выполняетсоответствующий обработчик события объекта для этого события "в цикле.В этом случае вы можете сказать, что потоков вообще нет (только процессоры и события) и, следовательно, нет многопоточности.

...