Можно ли распространять программу MPI (C++) через Интернет, а не в кластере локальной сети?

Я написал код MPI, который безупречно работает на больших кластерах. Каждый узел в кластере имеет одинаковую архитектуру процессора и имеет доступ к сетевой (то есть «общей») файловой системе (так что каждый узел может выполнять фактический двоичный файл). Но рассмотрим этот сценарий:

  • У меня в офисе есть машина с двухъядерным процессором (Intel).
  • У меня дома машина с двухъядерным процессором (амд).

Обе машины работают под управлением Linux, и обе машины могут успешно компилировать и запускать код MPI локально (т. е. используя 2 ядра).

Теперь можно ли связать две машины вместе через MPI, чтобы я мог использовать все 4 ядра, принимая во внимание разные архитектуры и принимая во внимание тот факт, что нет общих (сетевых) файловых систем?

Если да, то как?

Спасибо, Бен.


person Ben J    schedule 17.06.2010    source источник


Ответы (2)


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

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

person KeithB    schedule 17.06.2010
comment
Спасибо, я попробую, и если у меня возникнут какие-либо проблемы, я вернусь к вам :-) - person Ben J; 17.06.2010

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

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

person powerrox    schedule 04.03.2011