Почему MPI_Allreduce () зависает? [Дубликат]

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

0
задан Gilles Gouaillardet 14 January 2018 в 15:46
поделиться

1 ответ

MPI_Scatter() - это коллективная операция, и, следовательно, она должна быть вызвана всеми рангами коммуникатора.

избавиться от if (rank == 0), и вы будете в порядке.

Обратите внимание, что в вашем примере буфер отправки a достаточно мал и не вызывает зависания.

2
ответ дан Gilles Gouaillardet 15 August 2018 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: