Здравствуйте, remark, Вы писали:
R>Если у нас будет паттерн запрос-ответ (клиент-сервер), то всё будет намного хуже — будет ещё блокирование клиента, отправка ответа, доставание ответа, разблокирование клиента.
Все, хватит нести чушь и полоскать людям мозг. Надоело. Вот есть факт. Программы на MPI,
основанные на передаче сообщений, в большинстве случаев быстрее, чем программы под OpenMP, который построен на разделяемой памяти. Даже на одной машине. Это
наблюдаемый факт. А твои слова — это бла-бла-бла. Вот обгони для начала на разделяемой памяти умножение MPI-ное матриц на многоядерном проце, как ты говоришь, "на два порядка", и тогда будешь говорить мне, что там сказать честнее. Умнные все стали, сил нет, языками чесать.
http://www.lri.fr/~gk/QUID/papers/SPAA2003.pdf
We have demonstrated that it is absolutely not obvious
to get better performance with OpenMP codes compared to
MPI ones on shared memory machines.
А на нескольких машинах, к сведению, OpenMP не просто отстает, он С.О.С.Е.Т. Именно так. Причина в том, что модель на сообщениях — асинхронна, и поэтому хорошо толерантна к высоким задержкам. Почему и дает почти линейную масштабируемость.
S>>Вот хочется точно понять, почему такие же трюки неприменимы к передаче сообщений.
R>Модель не предусматривает таких оптимизаций. Мы же сознательно открещиваемся от разделяемых данных. А это как раз оптимизации, которые хорошо ложатся именно на разделяемые данные, потому что данные... *разделяемые* по сути своей.
Модель вообще не касается оптимизаций — модель есть модель. Она допускает любые оптимизации, не нарушающие семантику.
Религиозные соображения в духе "мы же сознательно открещиваемся" — нам, инженерам, малоинтересны.
Вы открещиваетесь? Открещивайтесь дальше.
Какое отношение имеют твои фантазии к реальности, я показал на примере MPI и OpenMP.