next up previous contents
Next: Опубликование имен Up: Установка соединения Previous: Процедуры сервера   Contents

Процедуры клиента

Клиентская сторона имеет только одну процедуру.





MPI_COMM_CONNECT (port_name, info, root, comm, newcomm)



IN port_name Сетевой адрес (строка, используется только root)  
IN info Информация, зависящая от реализации (дескриптор, используется только root)  
IN root Ранг в comm для узла root (целое)  
IN comm Интракоммуникатор, внутри которого выполняется коллективный вызов (дескриптор)  
OUT newcomm Интеркоммуникатор с сервером в качестве удаленной группы (дескриптор)  





int MPI_Comm_connect(char port_name, MPI_Info info, int root,
MPI_Comm comm, MPI_Comm *newcomm)

MPI_COMM_CONNECT(PORT_NAME, INFO, ROOT, COMM, NEWCOMM, IERROR)
CHARACTER*(*) PORT_NAME
INTEGER INFO, ROOT, COMM, NEWCOMM, IERROR

MPI::Intercomm MPI::Intracomm::Connect(const char* port_name,
const MPI::Info& info, int root) const

Эта процедура устанавливает соединение с сервером, указанным port_name. Она коллективна для вызывающего коммуникатора и возвращает интеркоммуникатор, в котором удаленная группа
участвует в MPI_COMM_ACCEPT.

Если названный порт не существует (или был закрыт), MPI_COMM_CONNECT возвращает ошибку класса MPI_ERR_PORT.

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

Совет разработчикам: Период таймаута может быть случайно длинным или коротким. Однако, высококачественная реализация пытается поместить попытки соединения в очередь, чтобы сервер мог обработать одновременные запросы от нескольких клиентов. Высококачественная реализация может также предлагать пользователю механизм, реализованный через аргументы info для MPI_OPEN_PORT, MPI_COMM_ACCEPT или MPI_COMM_CONNECT, для управления таймаутом и поведением очередей.[]

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

Аргумент port_name является адресом сервера. Он может иметь то же значение, что и имя, возвращенное функцией MPI_OPEN_PORT на сервере. Здесь позволяется некоторая свобода: реализация может принимать эквивалентные формы port_name. В частности, если port_name определяется в форме (hostname:port), реализация может также принимать (ip_address:port).



Alex Otwagin 2002-12-10