Alors voila mon code. il s'agit juste d'un petit test avec scatter et un vecteur(VecteurSP, hérité directement des vecteurs de ublas ,l'avant derniere version,1.36 :
#include <iostream> #include <stdio.h> #include <fstream> #include "MatriceBoost.h" #include <mpi.h>
using namespace std;
int main(int argc, char *argv[]) {
int rank, size; int i;
int Nx = 20; VecteurSP X(Nx); for (i=0;i<Nx;i++) { X(i) = i; }
cout<< "le vecteur X est : "<<X<<endl;
//////////////////////////////debut parallel////////////////////////////////////////////////////////
MPI::Init(argc, argv);
rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size();
int Nx_proc = Nx/size; VecteurSP X_proc(Nx_proc);
MPI_Scatter( &X(0)), Nx_proc, MPI_REAL, &X_proc(0), Nx_proc, MPI_REAL, 0, MPI_COMM_WORLD);
cout << "Hello world! I am " << rank +1 << " of " << size << " et mon vecteur X_proc est : "<<X_proc<<endl;
MPI::Finalize();
return 0; } Quand je compile, j'obtient ceci :
[jerem@localhost MPI_scatter]$ mpic++ -Wall -o main_scatter main_scatter.cpp main_scatter.cpp: In function 'int main(int, char**)': main_scatter.cpp:40: erreur: cannot convert 'VecteurSP' to 'void*' for argument '1' to 'int MPI_Scatter(void*, int, ompi_datatype_t*, void*, int, ompi_datatype_t*, int, ompi_communicator_t*)' main_scatter.cpp:40: erreur: expected `;' before ')' token
J'ai également essayer de mettre &X(0) à la place de X mais sans succes, dans ce cas il me retourne : [jerem@localhost MPI_scatter]$ mpic++ -Wall -o main_scatter main_scatter.cpp /tmp/ccDZe6EC.o: In function `main': main_scatter.cpp:(.text+0x87): undefined reference to `VecteurSP::VecteurSP(int)' main_scatter.cpp:(.text+0x145): undefined reference to `VecteurSP::VecteurSP(int)' collect2: ld a retourné 1 code d'état d'exécution
Je précise également que j'ai utilisé le meme programme avec un tableau tout simple et la pas de probleme en mettant juste le nom du tableau comme argument.
Voila, si il faut encore des précision aucun souci,
Merci d'avance!
|