Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Int source, int tag, MPI_Comm comm,





MPI_Request *request).

 

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

Проверка состояния выполняемой неблокирующей операции передачи данных выполняется при помощи функции

 

int MPI_Test(MPI_Request *request, int *flag,

MPI_status *status),

 

где request – дескриптор операции, определенный при вызове неблокирующей функции, flag – результат проверки (равен true, если операция завершена), status – результат выполнения операции обмена(только для завершенной операции).

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

 

MPI_Isend(buf,count,type,dest,tag,comm,&request);

do {

MPI_Test(&request,&flag,&status)

} while (!flag);

 

Если при выполнении неблокирующей операции окажется, что продолжение вычислений невозможно без получения передаваемых данных, то может быть использована блокирующая операция ожидания завершения операции:

 

int MPI_Wait(MPI_Request *request, MPI_status *status)

 

Кроме рассмотренных, MPI содержит ряд дополнительных функций проверки и ожидания неблокирующих операций обмена:

MPI_Testall – проверка завершения всех перечисленных операций обмена;

MPI_Waitall – ожидание завершения всех операций обмена;

MPI_Testany – проверка завершения хотя бы одной из перечисленных операций обмена;

MPI_Waitany – ожидание завершения любой из перечисленных операций Обмена;

MPI_Testsome – проверка завершения каждой из перечисленных операций обмена;

MPI_Waitsome – ожидание завершения хотя бы одной из перечисленных операций обмена и оценка состояния по всем операциям.

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

 

Date: 2016-02-19; view: 323; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию