Суперкомпьютер CRAY с использованием библиотеки MPICH2. Каждый узел имеет 32 процессора.
У меня есть один поплавок для N разных рангов MPI, где каждый из этих рангов находится на другом узле. Мне нужно выполнить операцию сокращения для этой группы поплавков. Я хотел бы знать, быстрее ли MPI_Reduce, чем MPI_Gather, с уменьшением, рассчитанным на корень, для любого значения N. Пожалуйста, предположите, что сокращение, выполненное на корневом ранге, будет выполнено с использованием хорошего алгоритма параллельного сокращения, который может использовать N потоков .
Если это не быстрее для любого значения N, будет ли это верно для меньшего N, например 16, или большего N?
Если это правда, то почему? (Например, будет ли MPI_Reduce использовать паттерн связи дерева, который имеет тенденцию скрывать время операции сокращения в подходе, который он использует для связи со следующим уровнем дерева?)