Можно ли использовать MPI_Reduce для умножения матрицы и вектора?

Я пытаюсь умножить матрицу A [MxN] и вектор B [N], где каждый процесс P получает столбцы M * P / N и N / P элементов из B, используя операции разброса и уменьшения.
Я могу сделать новый тип и разбросать элементы без проблем, например:

MPI_Type_vector ( m*n/p , 1 , p , MPI_INT , &columns );

MPI_Type_create_resized ( columns , 0 , sizeof(int) , &rescolumns );

MPI_Scatter (&A[0][0], 1 , &rescolums , newvector , m*n/p , MPI_INT , 0 , MPI_COMM_WORLD)

и сделать то же самое для вектора B, но не могу понять, как использовать MPI_Reduce умножить разбросанные результаты.

Буду признателен за любую оказанную помощь.

0

Решение

Да, это возможно, и есть гораздо более эффективная и оптимизированная процедура от Scalapack: PxGEMV. Посмотрите на эти примеры: http://www.netlib.org/scalapack/examples/pblas.tgz

0

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

Других решений пока нет …

По вопросам рекламы [email protected]