Вызов MPI из R для запуска кода C

У меня есть функция R, которая по существу действует как оболочка для набора функций C - код R вызывает код C через .C("..."). Этот код C можно распараллелить и скомпилировать с использованием некоторой реализации MPI. Однако, поскольку я никогда раньше не использовал MPI, я понятия не имею, будет ли такой MPI-код вызываться из R таким образом, чтобы MPI работал?

У кого-нибудь есть опыт работы с такими вещами? Я предполагаю, что библиотеки R MPI бесполезны для моей цели, учитывая, что вся работа выполняется глубоко внутри кода C. В конечном итоге это будет работать на кластере HPC, если это имеет значение?

Можете ли вы использовать mpicc для создания общего объекта, и если такой общий объект будет вызван из R, запустится ли параллельная реализация или вы просто получите последовательную версию (или действительно, как я подозреваю, она просто рухнет)?

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


person Alex    schedule 21.05.2012    source источник


Ответы (1)


Вы кажетесь сбитым с толку.

Вы можете просто использовать существующий пакет Rmpi для запуска параллельного выполнения. нескольких экземпляров R (на разных узлах), и каждый из них также может использовать ваш код, вызываемый .C().

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

person Dirk Eddelbuettel    schedule 21.05.2012
comment
Может быть, я (справедливости ради, это часто бывает). Я хотел избежать Rmpi, потому что я не думаю, что он установлен в кластерах. На мой взгляд, я хотел, чтобы R выполнялся последовательно и порождал код C, который использовал бы MPI. Тем не менее, в любом случае это кажется гораздо лучшим подходом (и я, возможно, полностью упускаю из виду свой первоначальный ход мыслей). - person Alex; 22.05.2012
comment
Я считаю, что все необходимое должно быть установлено на каждом узле — это самое большое препятствие. На практике полезно, чтобы все узлы совместно использовали пакеты R через общий каталог /usr/local/, смонтированный из NFS. Помимо этого, вам просто нужно иметь дело с разрешениями (ssh помогает) и общей конфигурацией MPI (имена хостов). Не такая уж большая проблема, как говорится. - person Dirk Eddelbuettel; 22.05.2012