Должен ли я установить барьер перед вызовом pdpotri ()?

я использую pdpotrf () для того, чтобы выполнить разложение Холецкого. Тогда я хочу позвонить pdpotri (), для того, чтобы инвертировать матрицу. Функция вызывается из каждого процесса, сразу после pdpotrf(), Должен ли я поставить там барьер, чтобы я был уверен, что все процессы выполнены с факторизацией Холецкого, а затем перейдем к инверсионной части, или она не нужна?

Я написал несколько примеров с крошечными данными, которые показывают, что это не нужно, но я хочу быть уверен, что мне не просто (не) повезло, и я столкнулся с проблемой с большими данными.

Обратите внимание, что под барьером я имею в виду это: MPI_Barrier(MPI_COMM_WORLD);


РЕДАКТИРОВАТЬ

Я просто волнуюсь, что инвертирование может начаться до того, как какой-то другой процесс завершит разложение Холецкого. Есть ли pdpotri() позаботиться об этом? Я имею в виду, он проверяет и ждет, если это необходимо. Или делает pdpotri() работать только в подматрице своего вызывающего процесса? Если это так, то барьер не нужен.

2

Решение

Пока я не изучал детали pdpotri() а также pdpotrf()Я вижу два случая:

1) Между двумя функциями должен быть барьер. В этом случае, однако, потому что pdpotri() всегда должен идти после pdpotrf()было бы наиболее разумно, если бы к началу pdpotri(),

2) Не должно быть барьера между двумя функциями.

В любом случае, вам не обязательно писать свой собственный явный барьер, используя MPI_Barrier(),

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector