привет слово в упаковке mpi4py с swig - PullRequest
0 голосов
/ 26 марта 2020

Я попытался запустить пример "Привет, мир" из , завернув с помощью swig с небольшой модификацией.

У меня проблема с компиляцией кода.

файл : helloworld.hpp

#include "mpi.h"

void sayhello(MPI_Comm comm)
{
    int size, rank;
    MPI_Comm_size(comm, &size);
    MPI_Comm_rank(comm, &rank);
    printf("Hello, World! "
            "I am process %d of %d.\n",
            rank, size);
}

файл: helloworld.i

%module helloworld

%{
#include "helloworld.hpp"
%}

%include /usr/local/lib/python3.6/dist-packages/mpi4py/include/mpi4py/mpi4py.i
%mpi4py_typemap(Comm, MPI_Comm);

%include "helloworld.hpp"

python скрипт:

from mpi4py import MPI
import helloworld

helloworld.sayhello(MPI.COMM_WORLD)
# Hello, World! I am process 0 of 1.

компиляция: (обновлено)

swig -c++ -python helloworld.i  
mpiCC  -O2 -fPIC -c helloworld_wrap.cxx -I /usr/include/python3.6 -I /usr/local/lib/python3.6/dist-packages/mpi4py/include
mpiCC  -shared helloworld_wrap.o -o _helloworld.so 

вывод:

$ mpirun -n 4 python3 runme.py 
Hello, World! I am process 0 of 4.
Hello, World! I am process 1 of 4.
Hello, World! I am process 2 of 4.
Hello, World! I am process 3 of 4.

Устранена ошибка компиляции.

...