Stackoverflowers.
Я нубский программист. Я работаю над небольшим проектом, в котором я хочу использовать MPI и Python без mpi4py.
Для простого тестирования я создал матричное умножение, работающее на MPI.
Допустим, моя выходная матрица - "output_mat".
Когда я печатаю "output_mat" из MASTER, он показывает правильный результат, но когда я печатаю его с клиентского узла, он равен нулю.
В моем файле ctypes он ожидает фиксированный размер выходной матрицы.
Но моя функция MPI имеет 2 "output_mat"
Теперь, как я должен передать output_mat в MASTER для ctypes?
Я не знаю мелочей в бэкэнде MPICH.
Я приветствую любые отзывы. Если вам нужна дополнительная информация, дайте мне знать.
Я не беспокоюсь о возврате вывода из MASTER; Однако у меня есть еще одна проблема, которая тесно связана с этим постом.
Если я распечатываю вывод из Python, он печатает столько раз, сколько процессов я использовал для запуска программы Python.
В моем demo.py
... //some irrelevant code above
result = mpi_matmul(mat1, 3, 3, mat2, 3, 3, output_mat, 3, 3);
print("Expected lenght = 9, Actual length = ", len(result))
for i in range(len(result)):
if ((i + 1) % 3) == 0:
print(result[i])
else:
print(result[i], end=" ")
Итак, если я запускаю
mpirun -np 2 python3 demo.py
Результат будет
Expected length = 9, Actual length = 9
30.0 36.0 42.0
66.0 81.0 96.0
102.0 126.0 150.0
Expected length = 9, Actual length = 9
1.0 1.0 1.0
1.0 1.0 1.0
1.0 1.0 1.0
Заранее благодарю за внимание.