The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Обработчики ошибок Up: Способность языка к взаимодействию Previous: Константы   Contents

Межъязыковая связь

Правила соответствия типа для связи в MPI не изменены: спецификация типа данных за каждый посланный элемент должна соответствовать, в сигнатуре типа, спецификации типа данных, которое использовалось для получения этого элемента (если один из типов не MPI_PACKED). Также, тип элемента сообщения должен соответствовать объявлению типа для соответствующего расположения буфера связи, если тип не MPI_BYTE или MPI_PACKED. Межъязыковая связь позволяется, если она выполняет эти правила.

Пример 4.14 В примере ниже, массив ФОРТРАНА послан из языка ФОРТРАН и получен в Си.

! КОД ФОРТРАНА
REAL R(5)
INTEGER TYPE, IERR, MYRANK
INTEGER(KIND=MPI_ADDRESS_KIND) ADDR
! Создать абсолютный тип данных для массива R
CALL MPI_GET_ADDRESS(R, ADDR, IERR)
CALL MPI_TYPE_CREATE_STRUCT(1, 5, ADDR, MPI_REAL, TYPE, IERR)
CALL MPI_TYPE_COMMIT(TYPE, IERR)
CALL MPI_COMM_RANK(MPI_COMM_WORLD, MYRANK, IERR)
IF (MYRANK.EQ.0) THEN
   CALL MPI_SEND(MPI_BOTTOM, 1, TYPE, 1, 0, MPI_COMM_WORLD, IERR)
ELSE
   CALL C_RQUTINE(TYPE)
END IF
/* Код Си */
void C_ROUTINE(MPI_Fint *fhandle)
{
  MPI_Datatype type;
  MPI_Status status;
  type = MPI_Type_f2c(*fhandle);
  MPI_Recv(MPI_BOTTOM, 1, type, 0, 0, MPI_COMM_WORLD, &status);
}

Разработчики MPI могут смягчить эти правила соответствия типа, и позволять сообщениям быть посланными с типами ФОРТРАН и полученными с типами Си, и наоборот, когда эти типы соответствуют. То есть, если тип INTEGER ФОРТРАН идентичен типу int Си, то реализация MPI может позволять данным быть посланными с типом данных MPI_INTEGER и быть полученными с типом данных MPI_INT. Однако, такой код не является мобильным.



Alex Otwagin 2002-12-10



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру