Модель общей памяти и модель распределенной памяти - PullRequest
0 голосов
/ 02 декабря 2018

Скажем, у вашего процессора текущая аппаратная архитектура ниже в логических элементах: enter image description here

Скажем, у нас есть модель с общей памятью и распределенная модель: enter image description here

enter image description here

Правильно ли говорить, что если мы хотим реализовать модель совместно используемой памяти и параллельные потоки процессов, нам потребуется какая-то утилита, например OpenMP.Будет ли общая память кэш-памятью L3 или оперативной памятью ОЗУ?А для реализации модели распределенной памяти нам потребуются некоторые утилиты, такие как MPI и несколько вычислительных систем (компьютеров)?

1 Ответ

0 голосов
/ 02 декабря 2018

Да, это именно так, пока вы не начнете работать над NUMA.

Итак, начнем с самого начала.Если у вас есть ядра, которые разделяют одно и то же пространство памяти, вы можете использовать потоки и библиотеки / инструменты, такие как OpenMP или TBB (если вы в C ++, используйте TBB, а не OpenMP).Вы также можете использовать MPI здесь.

Если у вас есть межсоединения, тогда единственный вариант - использовать библиотеку, подобную MPI.

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

Так что люди могут сделать в этих случаях:

  • один процесс на сокет (ине на узел, из-за NUMA)
  • закрепление потоков на ядре, память на сокетах
  • на сокете, используйте TBB
  • вне одного сокета, используйте MPI.

Я не говорю «часто», потому что многие научные коды все еще являются только MPI и могут изо всех сил пытаться ввести многопоточность, это совершенно другой подход из-за совместного использования памяти.

...