[mpich-discuss] (no subject)
Balaji, Pavan
balaji at anl.gov
Tue Nov 11 10:29:53 CST 2014
Please only use this list for MPICH-related questions, not general programming questions.
— Pavan
> On Nov 11, 2014, at 9:42 AM, Chafik sanaa <san.chafik at gmail.com> wrote:
>
> Hi,
> What should I do? i have the folowing error (error C4703: variable de pointeur locale potentiellement non initialisée 'sendbuf' utilisée and error C4703: variable de pointeur locale potentiellement non initialisée 'tab_indice' utilisée ) when I execute this program:
> #include <stdio.h>
> #include <stdlib.h>
> #include <mpi.h>
>
> #define DIMENSION 10
>
> int main(int argc, char** argv)
> {
> int myrank, i, n_procs;
> int * sendbuf; //buffer à disperser
> int * tab_indice; //indice de début de chaque subdivision
> int * tab_taille; //nombre d'éléments à envoyer
> // pour chaque processus
> int * rbuf; //buffer de reception
> int taille; //taille de la partie reçue
>
> //Initialisation de MPI
> MPI_Init(&argc, &argv);
> MPI_Comm_size(MPI_COMM_WORLD, &n_procs);
> MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
>
> if (myrank == 0)
> {
> //allocation mémoire
> sendbuf = (int *)malloc(n_procs*DIMENSION*sizeof(int));
> tab_indice = (int *)malloc(n_procs*sizeof(int));
> tab_taille = (int *)malloc(n_procs*sizeof(int));
> //remplissage du buffer à disperser
> printf("la taille de la boucle %d \n", n_procs*DIMENSION);
> for (i = 0; i<n_procs*DIMENSION; i++) sendbuf[i] = i;
> //initialisation des subdivisions
> for (i = 0; i<n_procs; i++)
> {
> //nombre d'éléments à envoyer
> tab_taille[i] = DIMENSION - i;
> printf("tab_taille[%d]=%d \n", i, tab_taille[i]);
> //indice de début du processus i
> // = celui de i-1 + nombre d'éléments
> // envoyés par i-1
> if (i != 0) tab_indice[i] = tab_indice[i - 1] + tab_taille[i - 1];
> else tab_indice[i] = 0;
> printf("tab_indice[%d]=%d \n", i, tab_indice[i]);
> }
> }
> //communication de la taille de la partie reçue à chaque processus
> MPI_Scatter(tab_taille, 1, MPI_INT, &taille, 1, MPI_INT, 0, MPI_COMM_WORLD);
> //allocation du buffer de reception
> rbuf = (int *)malloc(taille*sizeof(int));
> //dispersion
> MPI_Scatterv(sendbuf, tab_taille, tab_indice, MPI_INT, rbuf,DIMENSION, MPI_INT, 0, MPI_COMM_WORLD);
> //affichage
> printf("processus %d : [ ", myrank);
> for (i = 0; i<taille; i++) printf("%d ", rbuf[i]);
> printf("]\n");
>
> //desallocation mémoire
> free(rbuf);
> if (myrank == 0) {
> free(sendbuf);
> free(tab_indice);
> free(tab_taille);
> }
>
> MPI_Finalize();
> exit(EXIT_SUCCESS);
> }
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
--
Pavan Balaji ✉️
http://www.mcs.anl.gov/~balaji
_______________________________________________
discuss mailing list discuss at mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss
More information about the discuss
mailing list